在 TeX.SE 上的许多 MWE 中,LaTeX 代码没有解释性注释,并且尽可能紧凑。例如:
\documentclass[ngerman,fontsize=12pt,pagesize]{scrreprt}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\usepackage[backref=page,breaklinks,colorlinks]{hyperref}
\hypersetup{pdftitle={Titel},pdfauthor={username}}
\begin{document}
Blindtext. \url{http://tex.stackexchange.com}.
\end{document}
对于 LaTeX 初学者来说,阅读和理解起来尤其困难。因此,我习惯了某种编写 MWE 的风格。我%
在宏前面使用空格(必要时可改为字符),例如,\usepackage{}
或者我将文档类或包的每个选项写在单独的行中,并以逗号开头。因此,我可以注释选项的含义。并且可以看到哪些行被注释了。现在添加到示例中:您可以轻松地在两种字体或两种加密之间切换。相同示例的打印效果非常漂亮:
\documentclass[%
ngerman
%,paper=a4 % Papiergröße (Voreinstellung)
,fontsize=12pt % Brotschrift-Grad
%,parskip=full % Abstand Absätze, erste Zeile nicht eingezogen.
,pagesize % entscheidet zur Laufzeit, ob dvips oder pdf
]{scrreprt}
\usepackage{lmodern} % Latin Modern
%\usepackage{libertine} % Libertine Legacy
\usepackage[T1]{fontenc} % Ausgabezeichensatz
\usepackage[latin9]{inputenc} % Windows PC
%\usepackage[utf8]{inputenc} % Unicode
\usepackage[%
backref=page % Verweis auf Seite
% ,pagebackref % wie zuvor
,breaklinks % Links überleben einen Zeilenumbruch
,colorlinks % Links farbig für PDF-Betrachtung
]{hyperref}
\hypersetup{% % Konfiguration hyperref
pdftitle={Titel} % Titel
,pdfauthor={username} % Verfasser
%,linktoc=all % Alles als Link setzen
}
\begin{document}
Blindtext. \url{http://tex.stackexchange.com}.
\end{document}
问题:像这样格式化 LaTeX 代码有什么反对意见吗?例如,
宏的前导空格是否会
\usepackage{}
导致错误,这种表示法是否
,option = value
会导致错误(我更喜欢这种表示法,以消除缺失的逗号。如果所有逗号都在同一列,则很难忘记一个逗号(第一行不能有前导逗号))。
答案1
在正常情况下 (IE不包含在verbatim
或类似的情况下),TeX 将行尾转换为空格,并将多个空格合并为一个空格。它还会跳过行首的空格。因此
% Comment to show start of text
\usepackage{foo}
和
% Comment to show start of text
\usepackage{foo}% Note spaces
是等价的。同样地
\hypersetup{% % Konfiguration hyperref
pdftitle={Titel} % Titel
,pdfauthor={username} % Verfasser
相当于
\hypersetup{pdftitle={Titel} ,pdfauthor={username} ...
(注意逗号前的空格)。大多数 LaTeX 键值实现会忽略每个条目“前”和“后”的空格,因此
\setkeys{somepkg}{foo=bar,foo2=bar2}
和
\setkeys{somepkg}{ foo=bar , foo2=bar2 }
是等效的,这意味着行中的空格hyperref
也是可以的。值得注意的是,大多数 LaTeX keyval 实现也会忽略 周围的空格=
,因此
foo = bar
和
foo=bar
是等效的。(这对于 ConTeXt 来说不是这样的。同样值得注意的是,它datatool
使用了 keyval 实现,而这种实现对空格的容忍度要低得多。)
没有直接关系,但很多人喜欢在行末使用逗号
\hypersetup{% % Konfiguration hyperref
pdftitle={Titel}, % Titel
pdfauthor={username}, % Verfasser
% linktoc=all % Alles als Link setzen
}
它遵循完全相同的规则:您可以将逗号“齐平”或对齐,而空格仍会被忽略。
答案2
我创建了一个网站,可以重新格式化乳胶代码以使缩进正确。请注意,这个系统的优点是它忽略了初始标题并保留了格式\usepackage{}
。
该网站的重点主要是帮助组织 latex,以便您可以知道新方程式或列表块的缩进位置。重点不是添加注释,或创建空块以便可以插入注释。重点主要是