如何将一个命令拆分为几行并让 LaTeX 将其读取为一行?

如何将一个命令拆分为几行并让 LaTeX 将其读取为一行?

例如,我有一个命令,它有一个很多选项:

\documentclass[option1,option2,option3,option4,option5,option6,option7]{article}

我想将其分成几行,以便更好地阅读代码:

\documentclass[option1,
               option2,
               option3,
               option4,
               option5,
               option6,
               option7]{article}

正确的做法是什么?

答案1

每行以 结尾%。这将吞噬下一行开头的换行符和所有空格。因此你会得到

\documentclass[option1,%
               option2,%
               option3,%
               option4,%
               option5,%
               option6,%
               option7]{article}

做你想让它做的事。

编辑并添加:正如 Geoffrey 在该答案的评论中指出的那样,在这种情况下,这种解决方案有点矫枉过正。%在行尾使用总是吞噬换行符和前导空格 — 但是,这(正如 Geoffrey 指出的)无关紧要,除非在初始空格有影响的上下文中。因此,在 中\documentclass,可以省略它并使用 Kit 的原始代码;而在类似的情况下

\begin{tikzpicture}
  \foreach \p/\x/\y in {%
    0/1/2,%
    2/3/4,%
    3/4/5,%
    4/5/6,%
  } {
    \node [coordinate] (p\p) at (\x,\y) {};
  }
% Do stuff with the defined coordinates
\end{tikzpicture}

它变得相关,否则空格将包含在定义中\p,并破坏精心设计的坐标名称。

TikZ 之外还有很多类似的例子 —— 这是我能想到的最快与之相关的例子。

答案2

如果你懒得%在每一行末尾输入内容(或者你认为这样做很丑),那么一个巧妙的技巧就是重新定义\endlinechar。另一个技巧是将 的 catcode 设置^^M为 9(忽略)。在这些情况下,如果你如果想要在行尾有一个空格,则必须%在行尾使用“ ”(空格百分比)。

{%
a%
  b%
     c
d
}

相当于

{\endlinechar=-1
a
  b
    c %
d
}

相当于

{\catcode`\^^M=9
a
  b
    c %
d
}

相当于

{abc d}

相关内容