\addcontentsline{ext}{level}{content}
在使用非标准ext
时似乎无法正常工作。特别是,文件(在下面的示例中)似乎根本没有生成(或触及,如果它已经存在)。multitoc
.ext
.thn
注释掉multitoc
导入会导致自定义列表正确填充。重新注释会导致自定义列表再次变为空白,即使文件.thn
保留了上次运行的内容。
\addcontentsline{toc}...
在两种情况下都能正常工作。
\documentclass{article}
\usepackage[toc]{multitoc} % <-- Doesn't seem to matter where this line goes
\usepackage{tocloft}
\newlistof{things}{thn}{List of Things}
\newcommand{\thing}[1]{#1 -- #1\addcontentsline{thn}{things}{#1}}
\begin{document}
\tableofcontents
\listofthings
\section{Things}
\thing{Foo}
\thing{Flang}
\thing{Bar}
\addcontentsline{toc}{section}{Fake section}
\addcontentsline{thn}{things}{Fake Thing}
\end{document}
答案1
multitoc
重新定义内核\@starttoc
并存储原始定义\@multitoc@starttoc
,因此一个选项是恢复新列表的原始含义:
\documentclass{article}
\usepackage[toc]{multitoc}
\usepackage{tocloft}
\newlistof{things}{thn}{List of Things}
\newcommand{\thing}[1]{#1 -- #1\addcontentsline{thn}{things}{#1}}
\begin{document}
\tableofcontents
\makeatletter
\let\@starttoc\@multitoc@starttoc
\listofthings
\makeatother
\section{Things}
\thing{Foo}
\thing{Flang}
\thing{Bar}
\addcontentsline{toc}{section}{Fake section}
\addcontentsline{thn}{things}{Fake Thing}
\end{document}