Prechod na dalsiu stranku

Antonin Strejc STREJC at vc.cvut.cz
Tue Apr 1 18:41:23 CEST 1997


Radovan Wiszt pise:
>... Taham data zo suboru .dbf do plain TeXu
>podla  popisu v jednom z minulyych Bulletinov. Je to nieco na sposob slovnika.
>Zadefinoval som hlavicku strany, kde okrem cisla strany by mal byt napisany aj
>poslednyy pojem na stranke. Prpblem je vtom, ze TeX tam da pojem, ktory je az
>druhy v poradi na nasledujucej strane. Preto by som rad vedel ake premenne TeX
>pouziva pri zistovani konca strany, pripadne ako ho ukecat, aby vypisal
>skutocne psledny pojem na stranke a nie az nasledujuci.

Obecne o strankovem zlomu: TeXbook -- kap. 15 (How TeX Makes Lines
into Pages). Jde o znamy problem asynchronnosti pri strankovem zlomu.
K volani vystupni rutiny dochazi v okamziku, kdy vertikalni material
presahne svisly rozmer zrcadla (k tomu viz parametry \pagegoal a
\pagetotal), tedy stranka "vystupuje" z TeXu v okamziku, kdy je,
obrazne receno, v tlame TeXu uz dalsi sousto.

Tento problem jsem pred casem resil pri sazbe slovniku lidovych
nazvu lecivych bylin, proto zde poskytuji odladene reseni. Zadani bylo
takove, ze hlavicka stranky mela obsahovat vlevo prvni heslo na
strance, uprostred cislo stranky a vpravo posledni heslo na strance.
Kniha byla sice sazena v LaTeXu, ale reseni je snadno prenositelne.

%--------- ukazka ze souboru *.sty

\def\XX#1{\ifdim\pagetotal>0.95\pagegoal
          \ifdim\pagetotal<1.00\pagegoal\break\fi\fi
          {\bf #1}
          \ifdim\wd1=0pt\global\setbox1\hbox{#1}\fi
          \global\setbox2\hbox{#1}}

\def\ps at strana{\def\@evenhead{%
     \wd1=\wd2\box1\hfill\the\count0\hfill\box2}
     \let\@oddhead\@evenhead}

%--------- konec ukazky ze stylu

V hlavnim zdrojaku se sazi za uziti \pagestyle{strana}.
Hesla jsou tam psana zpusobem:

   \XX{heslo} vykladovy odstavec

   \XX{heslo} vykladovy odstavec atd.

Nazvy leveho a praveho hesla pro sazbu hlavicky se uchovavaji
v \box1 resp. \box2. Makro \XX  mimo jine ridi strankovy zlom
mezi hesly tim zpusobem, ze pokud by nove heslo zacinalo v rozmezi
95--100 procent zaplneni stranky, udela se nasilne \break a vystupni
rutina vysaje obsah boxu 1 a 2 do hlavicky, cimz je vyprazdni.
V dalsim se pak testem na prazdnost (\wd1=0pt) muze zjistit prvni
heslo nove strany. Ke strankovemu zlomu muze dojit i uprostred
vykladoveho odstavce -- zde se naopak asynchronnost hodi, protoze
do hlavicky je treba zanest nikoli aktualni, ale az nasledujici heslo.
Proto se tento druh zlomu nijak neznasilnuje.
V hlavicce se nasilne srovnaji sirky \wd1 a \wd2 na stejnou hodnotu,
aby cislo stranky vyslo presne doprostred i pri nestejne sirokych
levych a pravych heslech v hlavicce.

Doufam, ze jsem to v kratkosti vysvetlil srozumitelne.

Antonin Strejc

---------------------------------------------------------------------
Ing. Antonin Strejc                            Phone: +420-2-24352938
---------------------------------------------------------------------
Czech Technical University in Prague                 Computing Centre
Czech Republic                               Zikova 4, 166 35 Praha 6
---------------------------------------------------------------------



More information about the csTeX mailing list