命令的选项如何\RequirePackage
与其他地方为同一包指定的选项交互?
以下是示例:pdfx
如果使用 -option 加载包a-1b
,则执行命令\RequirePackage[pdftex,pdfa]{hyperref}
。但是,稍后在我的 LaTeX 源文件中,我可能还会执行命令\usepackage[pdfa=true,linkbordercolor={0 0 1}]{hyperref}
。我应该将 -command 放在文档中的什么位置,\usepackage[a-1b]{pdfx}
以免它与我的hyperref
-command 发生任何冲突?pdfx
的\RequirePackage
-command 加载的选项与我在 -command 中指定的选项不同,这是否\usepackage[...]{hyperref}
会导致问题?
相关的:
答案1
基本上,该包仅加载一次,并带有当时指定的选项。如果先前指定了指定的选项,则任何后续使用\RequirePackage
或的\usepackage
选项都会被忽略,否则会产生错误。通常将选项放在上是可行的\documentclass
,因此它们是所有包都可见的全局选项。
选项冲突错误的帮助文本建议将冲突包放在全局选项中,\documentclass
但这实际上并不是很好的建议。(人们可能会认为这是一个 latex 错误)。有效的方法是使用类似
\documentclass{article}
\PassOptionsToPackage{pdfa=true,linkbordercolor={0 0 1}}{hyperref}
\usepackage[a-1b]{pdfx}
\usepackage[pdfa=true]{hyperref}
\begin{document}
a
\end{document}
\PassOptionsToPackage
实际上并不加载包,但确实安排了如果加载了包,它将获得这些选项以及加载时明确列出的任何其他选项。因此,如果您怀疑一个或多个包正在内部加载包,并且想要确保它具有某些选项,则可以使用此方法。在hyperref
mhp 的答案中建议的替代方案也很好的情况下,请避免使用包选项并改用机制hypersetup
。但是,并非所有包都提供在以这种方式加载包后设置选项的方法。
答案2
多次加载具有不同(即可能冲突)选项的包很容易导致选项冲突。幸运的是,hyperref
包不需要在加载时设置。您可以使用以下方法\hypersetup
来设置它们:
\hypersetup{linkbordercolor={0 0 1}}