Internal counter

Stepan Kasal kasal at matsrv.math.cas.cz
Thu Nov 22 10:43:27 CET 2001


Dobry den,

Dne 21 Nov 2001, BruXy <bruchm at racom.cz> psal zhruba toto:
> narazil jsem v (pdf)CSLaTeXu na nasledujici problem:
>	\renewcommand{\thechapter}{\Alph{chapter}}
>	\setcounter{chapter}{0}
>	\renewcommand{\thechapter}{\arabic{chapter}}
> Ve vygenerovanem obsahu mam klikaci odkazy (balik hyperref), ale tyto
> ... bohuzel interni citac se vynuluje takze nasledujici kapitoly maji
> stejny label jako predchozi a odkazy v obsahu jsou zmrsene...
> Nevite jak na to?? Idealni by byla konstrukce ve smyslu nefunkcniho
> \renewcommand{\thechapter}{\arabic{chapter plus -4}}

neco takoveho by slo take, pomoci \newcounter, \setcounter a \addtocounter,
ale narazil jsem na urcite problemy, tak radeji zkusime jiny postup.

| *** Pro zvedavce: kdyz \thechapter neni plne expandovatelne, tak nefunguji
| \mark, tudiz nefunguji zahlavi, nefungoval mi \typeout{Chapter \thechapter}
| (to by bylo to nejmensi), ale kdovi kde to jeste bude delat problemy...

Dalsi veci je, ze predefinovavat \thechapter uprostred dokumentu je ponekud
nebezpecne, koledujete si treba o to, aby se Vam spatne vytisklo zahlavi
na posledni strane predchozi kapitoly a tak podobne.
Je lepsi dat do \thechapter podminku (\ifnum \value{chapter} > 4 ... apod.).

Bohuzel reseni vyzadovalo urcity trik. Predpokladam, ze mate nejprve
kapitoly s pismeny a az pak cislovane kapitoly. Doufam, ze tech pismennych
neni dvacet. Pokud budete nasledujici priklat upravovat dle svych prani,
dejte pozor na dve veci:
 - nikam do \thechapter se nesmi vloudit mezera navic; Vy budete nejspise
	upravovat jen prikaz \myAlph, tak, vyhovoval pocet kapitol:
	pozor -- mezera je jen za \or, nikdy pred \or nebo pred \fi!
 - \setcounter -5 znamena, ze kapitly oznacene pismeny budou mit cisla
	-4 az 0 (tedy celkem pet takovych kapitol), musite zmenit soucasne
	toto cislo i \myAlph

Vzniknou-li problemy, ozvete se i na muj e-mail.

S pozdravem,
	Stepan Kasal

\documentclass{scrreprt}

\newcommand {\myAlphchapter} {\ifcase -\value{chapter}%
	E\or D\or C\or B\or A\fi
}
\renewcommand {\thechapter} {%
	\ifnum \value{chapter} > 0
		\arabic{chapter}%
	\else
		\myAlphchapter
	\fi
}
\setcounter {chapter} {-5}

\begin{document}
\chapter{AAA}
\chapter{AAA}
\chapter{AAA}
\chapter{AAA}
\chapter{AAA}
\chapter{XXX}
\chapter{XXX}
\end{document}



More information about the csTeX mailing list