\PassOptionsToPackage 和内联选项传递之间有什么区别?

\PassOptionsToPackage 和内联选项传递之间有什么区别?

我注意到,例如,ClassicThesis 配置文件使用这种样式:

\PassOptionsToPackage{utf8}{inputenc}
\usepackage{inputenc}

代替

\usepackage[utf8]{inputenc}.

将选项传递给包的这两个选项有什么区别?换句话说,在 TeX(或 LaTeX?)中支持两种类型的参数语法的目的是什么?

答案1

\documentclass{beamer}
\usepackage[colorlinks]{hyperref}
\begin{document}

foo

\end{document}

给出一个option clash,因为一个包只能加载一次!并且这是hyperrefbeamer它自己内部完成的,但没有可选参数。LaTeXhyperref在第一次usepackage或之后标记为已加载RequirePackage之后标记为已加载,然后如果包应该第二次加载,则通过错误不同的可选参数。在这种情况下\PassOptionsToPackage,可以使用hyperref=colorlinks

 \documentclass[xcolor=table,hyperref=colorlinks,...]{beamer}
 \begin{document}

 foo

 \end{document}

用户通常不知道 documentclass 或其他包或 LyX 在其定义的前言中已经加载了哪些包。然后他/她只能通过选项冲突错误意识到应该多次加载某个包。

相关内容