我想知道该如何进一步深入研究这个问题。我相信我在 silent 包的更新日志中看到它必须进行一些更改才能与 hyperref 兼容,所以我想知道我现在是否遇到了新的错误。
这是一个使我的机器挂起的最小示例,并且软件包的加载顺序没有任何区别:
\documentclass{article}
\usepackage{silence}
\usepackage{hyperref,hyperxmp}
\begin{document}
\end{document}
所以我想知道我能做些什么,或者我应该向谁报告这个错误:hyperxmp,或者silence。
我可能从序言前使用 \RequirePackage 中得到了一些线索。这给了我这个错误:
! LaTeX Error: Command \maketitle already defined.
Or name \end... illegal, see p.192 of the manual.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.235 }
如果我按回车键继续,它就会挂起
答案1
正确的解决方法是不是使用该silence
软件包。真的,不要使用它。你以后会感谢我的 :-)
但是如果你坚持在此之上,那么您需要在代码中添加一个\title
和一个,在之前,它就不会再挂起了:\author
\begin{document}
\documentclass{article}
\usepackage{silence}
\usepackage{hyperref,hyperxmp}
\title{anything} % added
\author{anyone} % added
\begin{document}
\end{document}
发生这种情况是因为hyperxmp
尝试设置 pdf 元数据,例如标题和作者。为此,它使用 LaTeX\@title
和\@author
宏,它们保存了文档的标题和作者(您猜对了)。但是,当未指定\title
(或)时,LaTeX 的默认设置是错误消息(!),显示“未指定”(或“未指定”警告)。您知道是谁弄乱了 LaTeX 的所有消息吗?是的! 试图巧妙地隐藏错误消息,但它被不可扩展的标记所阻塞,然后大乱。\author
\title
\author
silence
\title
\author
这里有一个更详细的解释:https://tex.stackexchange.com/a/451568/134574。代码不同,但归根结底是相同的问题和解决方案。对于你的情况,简单的解决方法是给出一个\title
和一个\author
。
但请不要使用silence
。每次你想使用时,silence
请记住每一个错误/警告消息必须由某人编写,以便您能够更轻松地找出问题所在。加载silence
只会使查找过程更加困难(正如您刚刚看到的那样 :-)。
答案2
我有一个使用现已弃用的软件包的旧文档。我只是想更新此文档中的一些链接。由于有关弃用的新警告,我包含了silence
一些\WarningFilter
压制这些警告的命令(我计划稍后处理替换),并且也陷入了无休止的加载。对我来说,\hypersetup
在“\begin{document}”之前移动是解决方案。这里没有包含\author
或\title
,但是超级设置包含pdftitle
和pdfauthor
!如果没有后者,无休止的加载将会再次出现!
\documentclass{article}
\usepackage{silence}
\usepackage{duckuments}
\usepackage{hyperref,hyperxmp}
%\begin{document}
\hypersetup{
pdftitle={Test of package "silence"},
pdfauthor={Anne O. Nymus},
pdfcreator={pdfTeX},
pdfcopyright={Public domain (below threshold)}
}
\begin{document}
\duckument
\end{document}
使另一个begin{document}
处于活动状态或注释掉pdftitle
并pdfauthor
。
如果我没记错的话,我在文档开始后出现的原因\hypersetup
是编码(非 ASCII 字符pdftitle
),但如果所有内容都转换为 UTF-8,这现在不再重要了。