[cstex] Generování obsahu v plainu

Zdenek Wagner zdenek.wagner at gmail.com
Wed Aug 3 16:50:46 CEST 2011


Dne 3. srpna 2011 16:33 Stínovlas <stinovlas at gmail.com> napsal(a):
> Dobrý den,
>
> mám problém, se kterým si nevím rady. Snažím se o automatické generování obsahu
> v plainTeXu (resp. csplainu). Relevantní část kódu je poměrně stručná:
>
\write musíte použít až po vysazení nadpisu kapitoly, tedy až za \par,
nikoliv uprostřed nebo dokonce před. U kapitoly to není problém,
protože začínáte na nové stránce. U podkapitoly nejprve máte \write,
který vytvoří "whatsit". Pak zapíšete název, který se po jistých
činnostech vkládá do MVL. Jestliže se vyvolá algoritmus plněni stránky
a TeX zjistí, že nadpis podkapitoly je prvním elementem, který se na
stránku již nevejde, provede stránkový zlom mezi whatsit (\write) a
nadpisem. Správné pořadí je tedy: Nadpis \par \write

> \def\bigsecti at n#1#2{
>        \vfill\eject
>        \removelastskip%
>        \bigskip\bigskip%
>        \noindent{\fontnadpisa #1}%
>        \par%
>        \xdef\chapmark{#2}
> }
>
> \def\kapitola#1{%
>        \bigsecti at n{\the\chapnum. #1}{Kapitola \the\chapnum. #1}%
>        \tocadd{0}{\chapmark}
>        \advance\chapnum by 1%
> }
>
> \def\podkapitola#1{%
>        \tocadd{1}{#1}%
>        \removelastskip%
>        \bigskip%
>        {\fontnadpisb #1}%
>        \par\nobreak%
> }
>
> \newwrite\toc
> \immediate\openout\toc=toc.tex
>
> \def\tocadd#1#2{
>        \write\toc{\string\tocline{#1}{#2}{\the\pageno}}
> }
>
> Což by mělo (podle TeXbooku naruby) fungovat, protože \write expanduje
> až při \shipout.
> Přesto mi ale nevychází čísla stránek -- začíná-li podkapitola na nové
> stránce (hned za zlomem),
> je jí v souboru toc.tex přiřazena ještě předchozí stránka. Dumal jsem,
> hledal jsem, ale už vážně
> nevím...
>
> Budu vděčný za jakoukoliv pomoc.
>
> Jan Musílek
>
> _______________________________________________
> csTeX mailing list
> csTeX at cs.felk.cvut.cz
> http://lists.felk.cvut.cz/mailman/listinfo/cstex
>



-- 
Zdeněk Wagner
http://hroch486.icpf.cas.cz/wagner/
http://icebearsoft.euweb.cz




More information about the csTeX mailing list