Cislovani kapitol do obsahu;
Stepan Kasal
kasal at matsrv.math.cas.cz
Fri Jun 7 11:03:10 CEST 2002
Dobry den,
On Fri, 7 Jun 2002 06:25:35, Josef Polach <polach.j at pbsvb.cz> wrote:
> pro vytvareni obsahu pouzivam makro podobne jako to v TBN na strane 280-290.
> Vsechno by bylo v pohode, ale v pripade, ze mi vyjdou zacatky dvou kapitol
> na jednu stranku, objevi se v obsahu obe s tim vyssim cislem. V textu, kam
> vkladam to cislo taky, je spravne. Vypada to, ze ten radek do obsahu se
> vytvari teprve az zpracuje celou stranku a pamatuje si a tedy ulozi u obou
> az to druhe (obecne posledni) cislo.
i kdepak, ten radek se do obsahu zapise jeste pozdeji, az v momente, kdyz se
TeX rozhodl odeslat stranku do dvi souboru. Tou dobou uz muze mit zpracovany
zacatek nasledujici stranky, protoze se driv nedalo urcit, ktery strankovy zlom
je nejvyhodnejsi -- TeX musi brat v uvahu spoustu vlivu: pruzne mezery, kladne
a zaporne penalty, ...
Makro, ktere pouzivate, je vhodne pouze pro *kapitoly*, tedy nadpisy casti,
ktere s prevahou zaberou tak aspon dve stranky.
> Jak se to da osetrit?
Viz nize.
> Jak prinutit TeX, aby ten radek dal do souboru s obsahem hned a ne
> az pote, co si to cislo znova zvetsi?
Ale tohle by problem nevyresilo. V pripadech, kdy je potreba zpracovat
zacatek nasledujici stranky pred odeslanim rozdelane stranky, by se nadpis
ze zacatku nove stranky mohl objevit s cislem o jedno mensim.
Je spravne, ze se \write provede az v okamziku odeslani strany do dvi
souboru. Chybou vsak je, ze se pamatuje jmeno cotace, ktery tenkrat
obsahoval spravne cislo a ne cislo samo.
Muzete si pomoci mechanismy pro rizeni expanze, napr. takto:
[makra jsem neodladil, takze Vam nezbyva, nez snazit se je pochopit a dodelat
podle Vasich potreb]
\edef\save{\write\toc{\string\tocline{\the\num{. }{#1}}{\string\dotfill}{\
\noexpand\the\noexpand\pageno}}}\save
pri vhodne definici makra tocline by melo stacit:
\edef\save{\string\tocline{\the\num}{#1}}%
\expandafter\write \expandafter\toc \expandafter{\save {\the\pageno}}
nebo treba:
\edef\save{\write\toc{\string\tocline{\the\num}{#1}\the\pagetoks}}\save
pokud provedete jednorazove
\newtoks\pagetoks \pagetoks={{\the\pageno}}
(Ten posledni zpusob jsem opsal od Karla Horaka.)
S pozdravem,
Stepan Kasal
More information about the csTeX
mailing list