使用 `\usepackage` 命令的多行选项

使用 `\usepackage` 命令的多行选项

\usepackage当使用具有很多选项的命令来包含包时,是否有:

  1. 对于如何将选项拆分到多行,有什么限制吗?
  2. 对于跨多行格式化选项,有没有什么最佳做法?

例子

% Example #1
\usepackage[letterpaper,
            left=1in,
            right=1in,
            top=1.5in,
            headheight=1in,
            headsep=.3in
]{geometry}

% Example #2
\usepackage[letterpaper,
            left=1in,
            right=1in,
            top=1.5in,
            headheight=1in,
            headsep=.3in]
{geometry}

答案1

标准处理贯穿整个论证\zap@space 处理逗号列表,因此所有空格都会被忽略(除了在处理开始之前会变成空白行\par并产生错误。

但是,您展示了带有 key=value 列表的几何示例。您不想在 keyval 解析中删除所有空格,因为值可能(通常)需要空格,任何具有此类语法的包都已插入其自己的选项处理程序,因此答案原则上取决于所使用的包,但是大多数将使用keyvalxkeyval或基于系统,在这种情况下将忽略和周围的l3keys空格。,=

答案2

除了在选项列表中不留任何空行(相当于一个\par标记)之外,我认为没有任何特殊的限制。

我喜欢的加载包的格式样式如下所示。

\usepackage[
    letterpaper,
    left        = 1in,
    right       = 1in,
    top         = 1.5in,
    headheight  = 1in,
    headsep     = .3in,
]{geometry}

让我解释一下,以免我的回答被认为是主要基于观点

  1. 每个选项都应单独占一行,这样就可以轻松注释/取消注释,而无需重新格式化代码或删除内容。要实现这一点,第一个选项应单独占一行(即不与 在同一行\usepackage),最后一个选项也应单独占一行(即不与结束 在同一行])。
  2. 包选项应该缩进一个制表位以突出选项。
  3. 如果有很多key=value对,垂直对齐等号通常会使代码更易于阅读。

附录(Speravir 编写)

有一种变体,在所有内容前面都设置逗号,对于那些在更改值时很容易在末尾删除它们的人来说:

\usepackage
[
    ,letterpaper
    ,left       = 1in
    ,right      = 1in
    ,top        = 1.5in
    ,headheight = 1in
    ,headsep    = .3in
]{geometry}

你甚至可以使用逗号每个键值对,因为空字符串也会被删除。

相关内容