Re: Problemi creazione ambiente

#13813
Up
0
Down
::

Salve,

Ho un problema con la creazione di un ambiente. Sto cercando, per prendere più confidenza con le box, di ricreare l’ambiente del libro digital typography using latex (pag. 66)
`\newenvironment{myQuote}[2]%
{\begin{list}{}{\leftmargin#1\rightmargin#2}\item{}}%
{\end{list}}

……………. %posso anche creare un ambiente con newenvironment
\setbox0=\hbox{\includegraphics[width=2.8cm]{fig.pdf}}
\dimen0=\ht0 \advance\dimen0 by \medskipamount
\hrule\noindent\includegraphics[width=2.8cm]{fig.pdf}\vspace{-\dimen0}
\begin{myQuote}{\wd0}{0cm}
the text … bla bla bla … the text the text … bla bla bla …
\end{myQuote}\par\smallskip
\hrule`

Se il testo dentro myQuote è lungo, non ci sono problemi. Il problema sorge quando il testo è poco e quindi il secondo \hrule va a sovrapporsi alla figura. Inoltre ho creato un nuovo ambiente quote per non avere problemi in caso di testo su più pagine. Infatti l’ambiente a pag.66 del libro occupa 3 pagine.

Per uniformità tutti gli ambienti di questo tipo dovrebbero avere lo stesso rientro dal margine sinistro, direi. Ma è facile modificare l’ambiente che ti propongo per tenere conto di ampiezze variabili della figura.

`\newbox\hquotebox
\newdimen\hquoteminht

\newenvironment{hquote}[1]
{\par\addvspace{\medskipamount}\hrule\par\nobreak
\setbox0=\hbox{\includegraphics[width=2.8cm]{#1}}%
\hquoteminht=\ht0 \advance\hquoteminht\baselineskip
\advance\hquoteminht\topsep
\setbox\hquotebox\vbox\bgroup % comincia una scatola
\list{}{\leftmargin3cm \labelwidth3cm \labelsep0pt}
\item[\hbox to 0pt{\hss\vbox to 0pt{\box0 \vss}\hskip2mm}]\ignorespaces}
{\endlist\egroup % finisce la scatola
\ifdim\ht\hquotebox<\hquoteminht \vbox to\hquoteminht{\unvbox\hquotebox\vfill} \else \unvbox\hquotebox \fi \nobreak\hrule\addvspace{\medskipamount}}` L'ambiente hquote ha un argomento: il nome del file grafico. 1. entro in modo verticale e aggiungo una spaziatura; compongo la linea orizzontale e impedisco il cambio pagina 2. misuro l'altezza della figura da inserire e aumento questa dimensione di una tolleranza (=\baselineskip) e dello spazio che list inserisce alla fine dell'ambiente (\topsep); memorizzo questa dimensione per dopo 3. comincio a comporre l'ambiente in una mia scatola (\setbox\hquotebox=\vbox\bgroup); la chiusura della scatola sarà nella parte finale dell'ambiente 4. inizio un list, con \leftmargin di 3cm e inserisco nell'etichetta la figura, ma con dimensioni verticali nulle 5. dopo \ignorespaces comincia il testo dell'ambiente 6. a \end{hquote} finisco list e chiudo la scatola che adesso devo misurare 7. se l'altezza di questa scatola è minore di quella della figura (aumentata di quanto si deve), ne costruisco una dell'altezza giusta che compongo 8. se l'altezza della scatola è sufficiente, la smonto e la passo alla composizione 9. impedisco un cambio pagina, aggiungo la riga orizzontale e una spaziatura Se però uno di questi ambienti comincia verso un cambio pagina, rischi di avere problemi. Si dovrebbe fare un controllo su quanto spazio si ha a disposizione, roba lunga e noiosa; si guarda in fase di impaginazione finale. Ciao Enrico [nota: ho modificato \labelwidth e \labelsep]

Go to top