LaTeX 代码的漂亮打印

LaTeX 代码的漂亮打印

在 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,以便您可以知道新方程式或列表块的缩进位置。重点不是添加注释,或创建空块以便可以插入注释。重点主要是

https://c.albert-thompson.com/latex-pretty/

相关内容