- Questo topic ha 0 risposte, 1 partecipante ed è stato aggiornato l'ultima volta 20 anni, 1 mese fa da .
-
Topic
-
Salve, sono alle mie prime esperienze di “programmazione” LaTeX. Vorrei realizzare un comando che faccia queste cose:
– scriva un blocco di testo (eventualmente anche con ambienti);
– lo circondi a destra con una graffa alta quanto il testo;
– a fianco della graffa scriva una nota ruotata di 90 gradi.Per ora ho realizzato questa versione:
`
\RequirePackage{calc}
\RequirePackage{marginnote}
\RequirePackage{needspace}\makeatletter
\newlength{\commento@indent}
\setlength{\commento@indent}{\parindent}
\newlength{\commento@perc}
\newlength{\commento@skip}
\newlength{\commento@ht}\newcommand{\bracecomment}[4][1]{%
\settototalheight{\commento@ht}{%
\begin{minipage}{\textwidth}
\setlength{\parindent}{\commento@indent}
#3
\end{minipage}
}%
\setlength{\commento@perc}{#1\commento@ht}
\setlength{\commento@skip}{(\commento@ht – \commento@perc)/2}
\needspace{\commento@ht}
\mbox{}\marginnote{
\rotatebox[origin=c]{270}{%
\hspace{\commento@skip}
\begin{minipage}{\commento@perc}%
\setstretch{1}%
{\centering \scriptsize #2\\}
$\overbrace{\rule{\commento@perc}{0pt}}$
\end{minipage}
}%
}[#4]%
#3
}
\makeatother
`I parametri:
#1 e` l’altezza della graffa fratto l’altezza del testo che deve racchiudere;
#2 e` il commento a lato;
#3 e` il testo;
#4 e` un displacement della nota a margine nel caso serva.Esempio: \bracecomment[0.9]{Commento}{Testo del paragrafo}{0pt}
Il primo problema è su \mbox{}\marginnote{…}#3: se il testo comincia con un ambiente mi lascia uno piu` spazio verticale del necessario, ma non posso non mettere mbox altrimenti la nota a margine viene messa nella riga precedente e potrebbe accadere che la rimanga in una pagina mentre il testo vada in quella successiva.
Il secondo e maggiore problema si presenta quando il testo si estende a cavallo di un salto pagina. Qui ho scelto di mettere tutto il testo insieme con \needspace, ma la cosa piu` bella sarebbe dividere la graffa a meta` e scrivere la nota nella parte piu` grande. Per fare cio` credo mi potrebbe bastare sapere quanto e` alto il testo che va a finire nella prima pagina (poi dovrei scrivermi da solo la graffa e non usare overbrace, ma credo di potercela fare).
Il terzo problema e` quando il testo comincia con \begin{proof}: la parola “Dimostrazione” non entra nel conteggio dell’altezza della graffa.
Infine, se il testo termina ad esempio con un align, usando \qedhere nell’ultima riga il qed non viene messo per niente.
Inoltre presumo di aver fatto svariati errori del tipo usare comandi o nomi che non si possono usare in un .sty, se me li fate notare vi ringrazio.
Grazie per l’attenzione, mi rendo conto che ho richiesto una marea di cose – anche se non risponderete, mi basterebbe un link ad una qualche documentazione sullo stile da usare per scrivere pacchetti di questo tipo e sui problemi tipici che possono sorgere, non ho trovato niente di appropriato da solo.
Stefano[/code]
- Devi essere connesso per rispondere a questo topic.