Erstellen Sie zwei halbunabhängige Materiallisten, die ihren Zähler teilen

Erstellen Sie zwei halbunabhängige Materiallisten, die ihren Zähler teilen

Ich habe erfolgreich \newlistof{listofA}{A}{List of As}und verwendet \newlistentry{mycounter}{A}{0}, um eine Liste von A zu erstellen, deren Inhalt mit hinzugefügt wird \addcontentsline{A}{mycounter}{\protect\numberline{\themycounter}...}. Jetzt möchte ich eine Liste von B haben, die den Zähler gemeinsam hat mycounter. Ich habe \newlistof{listofB}{B}{List of Bs}. \newlistentry{mycounter}{B}{0}schlägt bei einigen fehl Command ... already defined. Ohne , mit \addcontentsline{B}{mycounter}{...}, beideListen sind leer. Was mache ich falsch?

Antwort1

Mit dem xassoccntPaket ist es möglich, mehrere Zähler zu koppeln, das heißt, wenn einer der Zähler hochgefahren wird, werden auch die anderen hochgefahren.

Deklarieren Sie eine Zählergruppe mit einem beliebigen Namen und weisen Sie ihr die relevanten Zähler zu.

Die Verwendung desselben Zählers ist nicht möglich, da \newlistofbeispielsweise ein nicht vorhandener Zähler erwartet wird foound aus dem Zählernamen eine Reihe von Befehlen generiert.

\documentclass{article}

\usepackage{tocloft}
\usepackage{xassoccnt}

\usepackage{blindtext}


\newcommand{\listoffooname}{List of foo environments}
\newcommand{\listoffoobarname}{List of foobar environments}

\newlistof[section]{foo}{foo}{\listoffooname}
\newlistof[section]{foobar}{foobar}{\listoffoobarname}

\DeclareCoupledCountersGroup{foofoobar}
\DeclareCoupledCounters[name=foofoobar]{foo,foobar}


% Dummy usage of the counter and generating a 'ToC' entry
\newenvironment{foo}[1]{%
  \refstepcounter{foo}
  \par\noindent\textbf{Foo \thefoo. #1}
  \addcontentsline{foo}{foo}{\protect\numberline{\thefoo} #1}\par%
}{\hrule}

\newenvironment{foobar}[1]{%
  \refstepcounter{foobar}
  \par\noindent\textbf{Foobar \thefoobar. #1}
  \addcontentsline{foobar}{foobar}{\protect\numberline{\thefoobar} #1}\par%
}{\hrule}



\begin{document}
\listoffoo
\listoffoobar


\section{Where foo starts}

\begin{foo}{A nice foo}

\blindtext[2]
\end{foo}

\begin{foobar}{A nice foobar}

\blindtext[2]
\end{foobar}


\begin{foo}{A nice foo again}

\blindtext[2]
\end{foo}

\begin{foo}{A nice foo again}

\blindtext[2]
\end{foo}

\begin{foobar}{A nice foobar again}

\blindtext[2]
\end{foobar}




\section{Where foo ends}

\begin{foo}{Another nice foo too}

\blindtext[1]
\end{foo}

\begin{foobar}{Another nice foobar}

\blindtext[2]
\end{foobar}




\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen