cislovani prostrednictvim makra ``numline.sty''

Zdenek Pytela pytela at phil.muni.cz
Thu Mar 8 11:35:06 CET 2001


Josef Lopata pise:
> Hledal jsem v archivu konference, ale jedine, co jsem nasel, bylo z roku
> 1993 a prispevky, ktere tomu predchazely, uz archiv neobsahuje.
	Doufam, ze se P. O. nebude zlobit, kdyz dopis z onoho roku
1993 ocituji cely.

--

--Zdenek <pytela at phil.muni.cz>


Vas problem me zaujal a venoval jsem mu proto chvili casu. Ne proto, ze
bych potreboval takovou vec sam, spis jste mi prihral moznost zase
jednou demonstrovat silnou stranku TeXu. Vazeni Venturiste,
Pagemakeriste, QuarkXPessiste ci jini tohoto druhu -- jakpak byste vyse
formulovany nestandardni ale banalni problem resili? Mam dojem, ze
byste prohlasili, ze to zatim nejde a ze je potreba pockat na dalsi
draze zaplacenou verzi vaseho omezeneho systemu!

Verim, ze jsem v predchozim odstavci neoslovil ZADNEHO ctenare tohoto
listu, protoze ctenari tohoto listu uz davno vedi, ktery typograficky
system je nejlepsi. Berte proto osloveni v predchozim odstavci pouze
jako basnicky obrat. V TeXu staci napsat jedenact nize uvedenych radek,
a problem je vyresen.

--------------------------- TeX macro -----------------------------

% Macro for automatic enumerating of lines after paragraph break
% November 19, 1993                                   Petr Olsak

% usage: \begnum ...one or more paragraphs...  \endnum
% Macro works in plain, LaTeX and AMS-TeX and only for ordinary paragraphs
% without display mathematics or other specialities.

\newcount\linenum \newcount\worknum \newbox\allparagraph

\def\begnum{\begingroup\linenum=0 \def\par{\ifhmode\completepar\fi}%
  \setbox\allparagraph=\vbox\bgroup}
\def\endnum{\par\egroup\endgroup}
\def\completepar{\endgraf \global\advance\linenum by \prevgraf
  \worknum=\linenum \setbox0=\hbox{}
  \loop \unskip \unpenalty \setbox2=\lastbox \ifhbox2
    \global\setbox0=\hbox{\llap{$\scriptstyle\the\worknum.$\hskip.7em}%
       \box2\penalty0\unhbox0} \advance\worknum by -1 \repeat
  \egroup \noindent\unhbox0\unpenalty \endgraf
  \setbox\allparagraph=\vbox\bgroup}

---------------------- end of TeX macro ----------------------------
Jeste poznamka pro zasvecene, kteri budou po me chtit makro cist:

Planovana pulhodinka se protahla v mem pripade na hodinu prace, protoze
jsem nejprve "presypaval" radky odstavce do \vboxu a nikoli \hboxu,
samozrejme vcetne meziradkovych glue a penalt. Ovsem tato technika
narazila na ztratu meziradkoveho glue (odvozenou z \baselineskipu) MEZI
jednotlivymi odstavci. Ani unvboxovani nepomuze, protoze prvni box
pochazejici z unvboxu se prilepi do stavajiciho vertikalniho seznamu bez
dodane meziradkove glue odvozene z \baselineskipu. Takze to vypada
stejne, jako by tam misto \unvboxu byl pouhy \vbox jako celek.

Z onoho duvodu jsem cely uz jednou nalamany odstavec presypal do \hboxu
a v ramci hlavniho vertikalniho seznamu jsem jej podruhe nalamal do
odstavce (tentokrat ale uz s pevne stanovenymi misty, kde je zlom vubec
mozny -- viz \penalty0).

Petr Olsak




More information about the csTeX mailing list