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