是否有理由将 \usepackage 选项放在单独的行中?

是否有理由将 \usepackage 选项放在单独的行中?

我理解这两个命令的作用是相同的:

\usepackage[letterpaper, landscape, margin=2in]{geometry}

\usepackage{geometry}
\geometry{legalpaper, landscape, margin=2in}

有什么理由可以解释为什么其中一个比另一个更可取吗?我问这个问题的目的不只是参考几何包,而是尽可能地从总体上考虑。

答案1

对于某些软件包来说这是可能的,但不一定全部可以以任意方式设置选项。

允许单独命令的值得注意的软件包有

  • geometry\geometry
  • hyperref\hypersetup
  • microtype\microtypesetup
  • siunitx\sisetup
  • captioncaptionsetup

(该列表并不详尽)。

存在一些差异;\geometry只能在序言中给出,而其他包的设置命令基本上可以放在任何地方并尊重分组。

\usepackage查阅每个包的文档来查看哪些选项(可能没有)在安装命令中没有意义。

一些特殊情况:如果你想对图片和表格标题进行不同的设置,你必须使用\captionsetupcaption实际上,我还是建议使用命令形式,而不是一长串的包选项。

还有另一个相关的方面。假设你想使用宏来设置文本宽度,而你想在单独的地方设置这个宏,也许是为了做实验。输入如下

\usepackage[textwidth=\mytextwidth]{geometry}

\newcommand{\mytextwidth}{13cm}

\begin{document}

即使我们知道在文档开始时设置了它,它也不会起作用geometry,因为在调用时,可选参数已经\usepackage完全展开。相反,

\usepackage{geometry}

\geometry{textwidth=\mytextwidth}

\newcommand{\mytextwidth}{13cm}

\begin{document}

可以工作,因为在这种情况下选项在调用时不会完全展开,而只有在实际执行设置时才会展开

这种行为在 LaTeX3 中可能会发生变化,它将在\documentclass和中使用较新的选项处理函数\usepackage

因此,使用哪种方法主要是个人选择。不过,有些情况下,命令方式强制的。如果您使用的文档类已经加载,例如,,geometry您无法\usepackage[<options>]{geometry}使用不同的选项集调用;命令形式不存在此问题。其他包也是如此,但请注意,一旦在包选项中设置了某些选项,就hyperref无法撤消。\hypersetup

相关内容