我理解这两个命令的作用是相同的:
\usepackage[letterpaper, landscape, margin=2in]{geometry}
和
\usepackage{geometry}
\geometry{legalpaper, landscape, margin=2in}
有什么理由可以解释为什么其中一个比另一个更可取吗?我问这个问题的目的不只是参考几何包,而是尽可能地从总体上考虑。
答案1
对于某些软件包来说这是可能的,但不一定全部可以以任意方式设置选项。
允许单独命令的值得注意的软件包有
geometry
和\geometry
hyperref
和\hypersetup
microtype
和\microtypesetup
siunitx
和\sisetup
caption
和captionsetup
(该列表并不详尽)。
存在一些差异;\geometry
只能在序言中给出,而其他包的设置命令基本上可以放在任何地方并尊重分组。
\usepackage
查阅每个包的文档来查看哪些选项(可能没有)在安装命令中没有意义。
一些特殊情况:如果你想对图片和表格标题进行不同的设置,你必须使用\captionsetup
。caption
实际上,我还是建议使用命令形式,而不是一长串的包选项。
还有另一个相关的方面。假设你想使用宏来设置文本宽度,而你想在单独的地方设置这个宏,也许是为了做实验。输入如下
\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