LaTeX 编程的空格/括号/缩进约定

LaTeX 编程的空格/括号/缩进约定

这个问题与格式化文档的文本/标记无关。我真正关注的是 LaTeX 的编程方面。我正在处理一组相当大的文档类和包,我想知道括号和缩进的常规用法是什么。

查看该latex.ltx文件,我看到一些组以它们的右括号作为最后一行的结尾,例如:

\def\vgl@{\par \dimen@\prevdepth \hrule \@height\z@
  \nobreak\vskip\skip@ \prevdepth\dimen@}

有时,结束括号位于下一行,例如

\def\ltx@sh@ft #1{%
  \dimen@ #1%
  \kern \strip@pt
    \fontdimen1\font \dimen@
  } % kern by #1 times the current slant

我认为后一种风格可以称为 K&R。我不知道前一种风格在 C 世界中是否有足够的追随者来命名。

从今天早上起,我就开始考虑使用 K&R 样式的括号,缩进四个空格。 latex.ltx我读过的其他资料使用两个,但四个似乎更易读一些。额外的换行符意味着必须小心\par添加额外的空格和 s,但为了便于阅读,我喜欢使用空格。

我很有兴趣听听 LaTeX 程序员使用过并且喜欢的其他约定。

答案1

当我有更多时间时,我会更详细地回答这个问题,但我目前最喜欢的 LaTeX2e 编程方法是始终将右括号放在自己的行上(并缩进两个空格,因为有时它会堆积很多)。例如,

\def\foo{%
  \bar{abc}%
}

就像您的第一个例子一样,我曾经虔诚地使用更多的内联样式,但后来我发现它使重新阅读代码变得有点困难(特别是当右括号堆叠了好几层深的时候)。

我非常不喜欢也不鼓励你的第一个示例的形式,即在同一行放置多个命令。当人们说 TeX 编程难以阅读时,他们使用的例子就是这些。

在 LaTeX3 编程中,我还有一些经验规则,但它们必须等待另一天。

答案2

我同意 Will 所写的内容,但我发现 2 个空格会让代码很难阅读。我的代码往往使用制表符缩进(因此请随意设置制表位)。我发现即使使用默认的 8 个空格制表位,我的代码也保持在 80 列以下(或多或少)。

如果我编写的宏是真的简单来说,我会把所有内容放在一行中。例如,\temp

\newcommand\foo[1]{%
        \edef\temp{#1}%
        % do something with \temp
}

代替

\newcommand\foo[1]{%
        \edef\temp{%
                #1%
        }%
        % do something with \temp
}

这显然更难阅读。

答案3

Will 和 TH 都回答得很好。我将采用经过修改的K&R 风格括号/缩进样式。我不会像控制结构那样对函数进行不同的缩进。TH. 明智地说,有一些明显的例外。

我还没有确定缩进的空格数。我认为 2 到 4 之间比较好。

相关内容