如果同时使用tocloft
和parskip
包,则会生成有关重新定义的警告\@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
可能没问题。如果您在之前调用,则文档中的功能将不可用。其他人可能会就如何一起使用这两个包给出更好的答案。tocloft
parskip
parskip
parskip
tocloft
tocloft