这可能是一个非常基本的问题:
当我编写代码时,我希望实现行的逻辑和可读结构,我可以看到哪个括号关闭哪个括号。
\begin{equation}
\begin{multlined}
Here is some random equation that goes on for a long time
\end{multlined}
\end{equation}
如果公式(这里我指的是源代码,而不是编译后的文档)继续到需要跳转到下一行的地方,它就会左对齐,这会搞砸缩进。我可以手动添加一些空格,但如果我更改窗口大小,它会重新对齐并再次出错。实现逻辑缩进的正确方法是什么?
如果之前已经问过这个问题,我深感抱歉;我在之前的问题中没有找到它。
编辑:抱歉,忘了说了,我使用 writelatex.com 作为我的编辑器。
答案1
我实际上经常思考这个问题,但(几十年后)还没有找到一种通用的方法。从你的评论中可以看出,每个程序员都有自己的缩进“风格”。
我同意 egreg 的观点,它在宏定义中最为重要。我发现一个特别有用的方法是,如果你必须将宏名称与其参数拆分成多行,那么用 结束前一行{%
并缩进下一行:
\...\macroname{%
\argument}%
\next code line
而不是
\...\macroname%
{\argument}%
\next code line
前者告诉我,这\argument
实际上是一个参数,\macroname
而不是命令序列中的下一个宏。您可能会说括号已经告诉了您这一点,但您直到看到该行才会知道这一点。使用前一种方法(左括号),就像将逗号放在一行文本的末尾,而不是下一行的开头。
如果有多个参数,或者参数本身很长且很复杂,可能需要多行,我通常会以对称的方式使用调用宏来关闭参数:
\...\macroname{%
\argument{blah}{blah}\other-parts-of argument{}%
}%
\next code line
如果事情变得非常棘手,我有时会在行上单独开始和结束参数括号:
\ifthenelse{\equal{\a}{\b}}%
{&
true condition%
}{%
false condition%
}%
next line of code
我发现,这个}{%
结构本身就占一行,它特别有助于提醒我一个论点即将结束,而下一个论点即将开始。
正如您所看到的,有人可能会说我的方法并不一致,而是随着编码内容的复杂性而变化。
我想重申,目标是可读性和可理解性。如果以某种方式解析代码可以帮助读者了解你的意图,那么解析就是有帮助的。就像所有事情一样,有独特的方法和风格。