Struktura cislovani v LaTeXu

Jaromir Kuben kuben at scova.vabo.cz
Thu Aug 26 16:02:26 CEST 1999


Nedavno se zde objevil dotaz, jak zmenit cislovani v latexu. Pozadavek byl,
aby v nove \chapter prikazy \section pokracovaly v cislovani a nezacinaly
znovu od jednicky. Dale melo byt oznaceni sekce ve tvaru napr. 3 a ne
2.3 (treti sekce ve druhe kapitole). Zatimco druhy pozadavek je snadny, prvni
cini potize. Je totiz nutne zrusit zavislost citace odpovidajiciho section
na citaci odpovidajicim chapter.

Kdyz jsem vcera odpovidal, nevedel jsem elegantni reseni. Protoze jsem to uz
nekolikrat potreboval, pokusil jsem se podivat do zdrojoveho kodu latex2e
(je to pocteni), jak na to. A snad jsem nasel spravne reseni. Je realizovano
prikazem \umaz, ktery ma dva parametry:
  1. par. = jmeno citace, jehoz zavislost se ma zrusit
  2. par. = jmeno citace, na nemz se ma zavislost zrusit
Testuje se i existence obou citacu. Funguje v latex2e i latex2.09
(tam je nutne nahradit \@nocounterr{#1} prikazem \@nocnterr
a podobne \@nocounterr{#2} prikazem \@nocnterr).
Napr. muzete zkusit:

\documentclass{report}

\usepackage{czech}

\makeatletter
\def\umaz #1#2{\@ifundefined{c@#1}{\@nocounterr{#1}}{%
\@ifundefined{c@#2}{\@nocounterr{#2}}{%
\begingroup
\def\@srovnani{#1}%
\def\@elt##1{\def\@pom{##1}%
\ifx\@srovnani\@pom
\else \@addtoreset{##1}{#2}%
\fi }%
\expandafter\let\expandafter\@docasny\csname cl@#2\endcsname
\expandafter\let\csname cl@#2\endcsname\@empty
\@docasny
\endgroup}}}
\makeatother

\umaz{section}{chapter}
\renewcommand{\thesection}{\arabic{section}}

\begin{document}

\chapter{Jedna}

\section{Sekce I}

Text. Odkaz na sekci~\ref{sec2}.

\chapter{Dva}

\section{Sekce II}
\label{sec2}

Text.

\section{Sekce III}

Text.

\chapter{Tri}

\section{Sekce IV}

Text.

\end{document}

Zdravi
          Jaromir Kuben



More information about the csTeX mailing list