作者有时会用格式为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 的问题,也不是你的编辑器/工具的问题,但你可以让你的编辑器更智能地处理这类事情:例如,你可以使用如下启发式方法:如果满足以下条件,则一行表示一个编号列表:
- 它以一串空格字符、一串(小)数字和一个 开始
)
,或者换句话说,像^\s+[0-9]{1,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
这使得段落中断,从而使错误检测变得更糟,但\renewcommand
LaTeX 纯粹主义者更喜欢这种方式,但这是题外话。)(如果您愿意,您也可以定义\)
为)
,然后改为写\(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 的排版输出并不那么容易定制,所以如果您需要它看起来不同,您可能会发现它很难使用。