multitoc 阻止为 tocloft 自定义列表添加行

multitoc 阻止为 tocloft 自定义列表添加行

\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}

在此处输入图片描述

相关内容