Memnarch, mi hai preceduto di un soffio ma sicocme il compito io l’ho fatto ti mando la soluzione:
`
\newenvironment{cornicerossa}[1][0.6\textheight]{%
\fboxsep=6pt\fboxrule=1pt
\clearpage
\setbox0\hbox\bgroup
\begin{minipage}[t][#1][t]{\dimexpr\textwidth-2\fboxsep-2\fboxrule}%
\vspace*{\dimexpr.5ex-\fboxsep}
\begin{multicols}{2}
}{%
\end{multicols}\end{minipage}\egroup
\noindent\fcolorbox{red}{yellow!20!white}{\box0}\par
}
`
come vedi l’ambiente minipage è preceduto da un \clearpage perché se la cornice deve apparire in testa alla pagina, è bene che la cornice rossa vada in testa alla pagina.
L’ambiente cornice rossa accetta un argomento opzionale il cui valore di default è 0.6\textwidth; se apri l’ambiente senza specificare l’altezza che vuoi, usa quell’altezza; naturalmente a livello di definizione dell’ambiente puoi cambiare il valore 0.6 con qualunque altro valore inferiore all’unità. se poi apri l’ambiente specificando nell’argomento opzionale, diciamo 0.8\textwidth oppure 80mm, o quel che ti pare, ma è sempre meglio riferirsi a una frazione di pagina, oppure ad un multiplo intero di righe, per esempio 20\baselineskip, allora la cornice uscirà di quell’altezza. Volendo dentro l’ambiente si potrebbero fare dei calcoli per aggiustare finemente l’altezza della cornice in modo da tenere conto sia dello spessore della cornice e dealla sua distanza dal contenuto.
A livello di definizione dell’ambiente non toccare #1 nel secondo argomento opzionale; puoi toccare i due codici di posizionamento; il primo indica l’allineamento dell’intera cornice; io ho scelto t (top) ma è relativamente poco importante, perché la cornice va in testa alla pagina; mentre per il secondo ho scelto la posizione del testo dentro alla cornice e l’ho scelto spinto tutto verso il top; però se ci metti c il testo viene centrato; io non ci metterei b per appoggiarlo a fondo della cornice.
Tutto il resto come vedi è come prima. Le prossime modifiche le fai da solo, così come ti proponevi di fare, OK? 🙂