使用 tocloft 和 parskip 会生成有关重新定义 \@starttoc 的警告

使用 tocloft 和 parskip 会生成有关重新定义 \@starttoc 的警告

如果同时使用tocloftparskip包,则会生成有关重新定义的警告\@starttoc

MWE 很简单。此代码

\documentclass{article}
\usepackage{parskip}
\usepackage{tocloft}
\begin{document}
    \tableofcontents
    \section{Section}
    Some text
\end{document}

生成警告

Package tocloft Warning: \@starttoc has already been redefined; tocloft bailing out. on input line 1147.

而如果将两个包的加载顺序反转,警告将变成

LaTeX Warning: Command \@starttoc  has changed. Check if current package is valid.

我查看了这两个包的代码,它们在 的定义上看起来非常相似\@starttoc。尽管如此,输出的 PDF 看起来完全相同。

忽略此警告是否安全?否则如何将其删除?谢谢!

答案1

2022 年的解决方案很简单,只需parskip在 之后加载即可tocloft

\documentclass{article}
\usepackage{tocloft}
\usepackage{parskip}
\begin{document}
    \tableofcontents
    \section{Section}
    Some text
\end{document}

Parskip 现在可以轻松处理 tocloft 所做的更改,但反之则不然。

答案2

两个包中的重新定义不同。parskip包确保目录中的\parskip为零(在大多数文档中都是如此)。tocloft包在目录的开头和结尾添加了钩子,但对没有任何作用。如果您在之前调用并忽略警告,则\parskip可能没问题。如果您在之前调用,则文档中的功能将不可用。其他人可能会就如何一起使用这两个包给出更好的答案。tocloftparskipparskipparskiptoclofttocloft

相关内容