Я успешно использовал \newlistof{listofA}{A}{List of As}
и \newlistentry{mycounter}{A}{0}
для создания списка A, содержимое которого добавляется с помощью \addcontentsline{A}{mycounter}{\protect\numberline{\themycounter}...}
. Теперь я хочу иметь список B, который разделяет счетчик mycounter
. У меня есть\newlistof{listofB}{B}{List of Bs}
.
\newlistentry{mycounter}{B}{0}
терпит неудачу с несколькими Command ... already defined
. Без него, используя \addcontentsline{B}{mycounter}{...}
,
обасписки получаются пустыми. Что я делаю не так?
решение1
Сxassoccnt
пакета можно соединить несколько счетчиков, т.е. если один из счетчиков ступенчатый, то и другие тоже ступенчатые.
Объявите группу счетчиков с некоторым «произвольным» именем и назначьте им соответствующие счетчики.
Использование того же счетчика невозможно, так как \newlistof
ожидается, скажем, несуществующий счетчик, foo
и генерируется куча команд из имени счетчика.
\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}