有没有非分隔符括号的格式?

有没有非分隔符括号的格式?

作者有时会用格式为1)then2)等的数字对列表进行编号。我有时必须引用这些列表,而当我这样做时,它们当然会显示为分隔符错误。它们不会像我希望的那样阻止文件编译,但它们会干扰我执行分隔符检查。

有没有办法格式化 1)等等2),以便当我进行分隔符检查时它们不会显示为分隔符?

回应一条评论,这里是 MWE。它给出了一个只有一个条目的列表,并且 1) 显示为分隔符错误(当然应该如此)。

\documentclass{article}
\begin{document}
1) Dog.
\end{document}

@ShreevatsaR 正确地指出了分隔符检查是编辑器功能,而不是 LaTeX 功能。这就是为什么我不在这里询问有关更改分隔符检查的问题。我询问的是 LaTeX 代码。

答案1

文档没有错误。如果你的编辑器(错误地)抱怨括号不匹配,你可以这样做

\documentclass{article}
\begin{document}
%(
1) Dog.
\end{document}

答案2

虽然这不是 LaTeX 的问题,也不是你的编辑器/工具的问题,但你可以让你的编辑器更智能地处理这类事情:例如,你可以使用如下启发式方法:如果满足以下条件,则一行表示一个编号列表:

  1. 它以一串空格字符、一串(小)数字和一个 开始),或者换句话说,像^\s+[0-9]{1,2}\)和 这样的正则表达式
  2. 它比前一个非空行有更多的缩进,或者它具有与前一个非空行相同的缩进,其本身表示编号列表。

然后你可以写

\documentclass{article}
\begin{document}
 1) Dog.

 2) Cat.
\end{document}

并且您的启发式方法将正确地忽略这些),而不是将它们视为不匹配的右括号。

如果你想要编写有效的 LaTeX 代码,同时“欺骗”你的编辑器不是犯愚蠢的错误,那么一个技巧是使用包含“缺失” (s 的注释来匹配您的)s,如 David Carlisle 的回答中所示。您需要为列表中的每个项目使用其中一个。另一个技巧是使用自定义宏。例如,\(是在 LaTeX 中定义的宏,乐观地打算替代$ ... $(进入和退出数学模式),尽管我还没有遇到过任何“野外”人以这种方式使用它们。如果你将它们用于此目的,我想这对你来说是件好事。如果你不这样做,那么可以重新\(定义为不执行任何操作的宏:

\documentclass{article}
\renewcommand{\(}{}
\begin{document}
 \(1) Dog.

 \(2) Cat.
\end{document}

(实际上我会\def\({}在这里使用而不是\renewcommand{\(}{}因为后者是相当于\long\def这使得段落中断,从而使错误检测变得更糟,但\renewcommandLaTeX 纯粹主义者更喜欢这种方式,但这是题外话。)(如果您愿意,您也可以定义\)),然后改为写\(1\) Dog。)

当然恰当的方法是使用列表的环境,比如使用枚举包(读文档:见作者:))如下:

\documentclass{article}
\usepackage{enumerate}
\begin{document}
%( -- need this if your editor cannot be told to ignore parentheses inside the optional argument to enumerate
\begin{enumerate}[1)]
   \item Dog.
   \item Cat.
\end{enumerate}
\end{document}

这会在输出中产生像1)和这样的数字2),尽管 LaTeX 的排版输出并不那么容易定制,所以如果您需要它看起来不同,您可能会发现它很难使用。

相关内容