Kapitola "na zlom stranky" <-> obsah - cislo stranky
Martin Proks
proks at aerospace.fsik.cvut.cz
Tue Sep 17 14:07:54 CEST 2002
Dobry den,
Jsem pokrocilejsi zacatecnik. Delam si v plainu makro pro sazeni
kapitol/obsahu a mam problem s cislovanim. Mam konstrukci (trochu
ocesane - jen pro princip):
%% provede fyzicky zapis do \jobname.top
%% #1 - retezec na zapsani
\newtoks\pisretezec
\def\zapis#1{{
\let\_=\relax
\let~=\relax
\let\dots=\relax
\let\TeX=\relax
\pisretezec={#1}\edef\act{\write\TOCWRITE{\the\pisretezec}}\immediate\act
}}
%% sestavi radku pro zapis do \jobname.top a vyvola zapis
%% #1 - cislo a jmeno kapitoly
\def\maketoca#1{\zapis{\string\toclinea{#1}{\the\pageno}}
%% vysazi nazev kapitoly a zavola makra pro zapis do \jobname.top
%% #1 - jmeno kapitoly
\def\section#1{
\subkapno = 0 \subsubkapno = 0 \parkapno = 0 \pparkapno = 0
\global\advance\kapno by1
\penalty -2000
\vskip 24 pt
\leftline{\bigggg\vbox{\the\kapno. #1}}
\vskip 0pt
\maketoca{\the\kapno. #1}
}
TOCWRITE je ukazatel na \jobname.top, do ktereho se ukladaji
radky ve formatu: \toclinea{"1. Nejaka kapitola"}{"cislo strany"}
Obsah se sazi z kopie jmenem \jobname.toc z predchoziho behu.
Funguje to dobre, ale problem nastava u kapitol, ktere vychazi
"na zlom" stranky. Kdyz nazev kapitoly vyjde na konec strany,
TeX ji vysazi a zaznamena si stranku do \jobname.top. Pak se ale pokusi
vysazet text kapitoly a penalty ho prinuti presadit nazev kapitoly na
dalsi stranu k textu. Spravne. Jenze v \jobname.top je "stare" \pageno
a tim padem mam chybne cislo v obsahu. Opakovane spusteni nepomuze,
protoze k tomu dojde znovu. Muzu to resit "manualne" (kdyz chybu
uvidim, vlozim \vfill\eject pred kapitolu), ale to neni dobre reseni
(nutna neustala kontrola, co kdyz budu dokument doplnovat - pretecu
na dalsi stranu, ...).
Co s tim?
Diky za napady,
--
Martin Proks
proks at aerospace.fsik.cvut.cz
http://aerospace.fsik.cvut.cz/proks
More information about the csTeX
mailing list