- Questo topic ha 2 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 13 anni, 6 mesi fa da .
-
Topic
-
Salve a tutti. Chiedo un lume su un comportamento di cui non riesco a darmi ragione.Nel codice che segue \boxize disegna il contorno della scatola che gli viene passata come parametro, \narrow … \endnarrow compone il testo con una lunghezza di riga minore rispetto al normale, \liney compone un \hbox contornato all’interno dell’ambiente \narrow.
`\catcode`@=11
\font\small=cmr8\def\boxize#1{\vbox{\hrule\hbox{\vrule\hbox{#1}\vrule}\hrule}}
\newdimen\narrowgap
\def\narrow{\begingroup \vskip\baselineskip
\narrowgap=1in
\advance\leftskip by \narrowgap\relax
\advance\rightskip by \narrowgap\relax
\small}\def\endnarrow{\endgroup \vskip\baselineskip}
\newdimen\lineywidth
\def\liney#1{\lineywidth=\hsize
\advance\lineywidth by -\leftskip
\advance\lineywidth by -\rightskip
\boxize{\hbox to\lineywidth{#1}}}
\catcode`@=12\input plipsum
\lipsum 1
\narrow
\liney{\hfil ONE\hfil}\par
\lipsum 2 \par\noindent
\liney{\hfil TWO\hfil}\par\noindent
\lipsum 3 \par
\liney{\hfil THREE\hfil}\par
\lipsum 4 \par\noindent
\liney{\hfil FOUR\hfil}\par\noindent
\lipsum 5 \par
\liney{\hfil FIVE\hfil}
\endnarrow
\lipsum 6
\bye`Orbene, compilando il codice si nota come i \liney preceduti da un semplice \par (o equivalente) vengano composti arretrati rispetto al testo circostante, mentre quelli preceduti da \par\noindent (two e four) risultano composti allineati al corpo di testo.
Perchè i \liney one three e five sono arretrati? Perchè il \noindent provoca l’assestamento dell’hbox, a differenza del testo normale che ha invece il comportamento che normalmente ci si aspetta?
Grazie e ciao.
- Devi essere connesso per rispondere a questo topic.