喂食
\documentclass{article}
\usepackage{footmisc}
\usepackage{marginfix}
\usepackage{todonotes}
\begin{document}
\todo{test}
\end{document}
导致pdflatex
编译错误:
! Package marginfix Error: lost some margin notes.
See the marginfix package documentation for explanation.
Type H <return> for immediate help.
...
l.7 \end{document}
? Q
不幸的是,marginfix 文档第 13 节中的解释对我来说毫无意义。再多一点文字,比如说,
\begin{document}
test
\todo{test}
test
\end{document}
没有帮助。
使用的版本:
pdfTeX,版本 3.141592653-2.6-1.40.24(TeX Live 2022/Debian)
LaTeX2e <2021-11-15> 补丁级别 1
L3编程层 <2022-06-02>
文章 2021/10/04 v1.4n
footmisc 2022/03/08 v6.0d
marginfix 2020/05/06 v1.2
todonotes 2021/06/04 v1.1.5
这是当前 Debian 测试版 TeX Live。在 Debian 稳定版 TeX Live 中,上述代码可以运行(或至少几个月前可以运行)。
谁是罪魁祸首?我们该怎么办?
答案1
您可以使用较早的footmisc
\documentclass{article}
\usepackage{footmisc}[=v5]
\usepackage{marginfix}
\usepackage{todonotes}
\begin{document}
\todo{test}
\end{document}
答案2
marginfix 修补了\@combinefloats
footmisc 并使用了一个新的输出例程,这个例程不再起作用(或者说没有效果)。后footmisc。因此,无需使用旧版本的 footmisc,只需先加载 marginfix 即可。
鉴于 LaTeX 的输出例程将会改变(沿着 footmisc 已经使用的线路,但增加了用于其他包的钩子),像\@combinefloats
marginfix 所做的那样进行低级修补是没有前途的,应该在将来的某个时候被替换,那时有适当的钩子可用于“安全”修补。
顺便说一句,该问题与 todonotes 无关,您可以删除该包并使用来\marginpar
生成错误。