在哪里可以找到 TeX 环境的定义?

在哪里可以找到 TeX 环境的定义?

从我的评论可以看出这里这里这里,我目前正在尝试找出如何查看环境的定义,但我觉得新问题会得到更快的回复。我希望能够自己查找环境的定义,这样我就不必浪费时间在网上寻找定义或在这里提问。我目前正在寻找的定义是quote,因为我想调整整个段落的缩进。我在 source2e.pdf 中找不到它,这让我相信它不是 LaTeX 环境而是 TeX 环境(而且我不知道在哪里可以找到 TeX 的内核编码)。

quoting在这种情况下,当我想调整整个段落的缩进而不是重新定义环境时,您是否建议我宁愿寻找一个类似的包quote

答案1

可以定义一个环境

  1. 在 LaTeX 内核中(list,还有enumerate),

  2. 在文档类中(quotetitlepage),或

  3. 在您加载的包中。

对于您想要了解的环境,没有硬性规定来查找情况。当然,如果您想知道的定义bytefield,您可以查看提供它的定义包。

情况 1 和 2 更难区分。根据经验,内核提供了“通用”环境,例如listtrivlistcenterflushleft;并且enumerate和也在itemize此处定义,因为它们被视为通用的。但description留给文档类,例如quotequotation

请注意,您不会\newenvironment{enumerate}在 LaTeX 内核中找到它,因为它节省了令牌内存(请记住,LaTeX 是在内存资源不像今天这样丰富的时候开发的)。

然而,环境可能重新定义通过您加载的包。一个简单的例子是,它改变了、和enumitem的定义。enumerateitemizedescription

一个很好的工具是texdef,与 TeX Live 一起分发;这是一个示例会话:

> texdef -t latex enumerate

\enumerate:
macro:->\ifnum \@enumdepth >\thr@@ \@toodeep \else \advance \@enumdepth \@ne \edef \@enumctr {enum\romannumeral \the \@enumdepth }\expandafter \list \csname label\@enumctr \endcsname {\usecounter \@enumctr \def \makelabel ##1{\hss \llap {##1}}}\fi

> texdef -t latex -p enumitem enumerate

\enumerate:
macro:->\@protected@testopt \enumerate \\enumerate {}


\\enumerate:
\long macro:[#1]->\enit@enumerate \enitdp@enumerate {enum}\thr@@ {#1}

您可能想尝试以下-s选项:

> texdef -t latex -s quote
% article.cls, line 404:
\newenvironment{quote}
               {\list{}{\rightmargin\leftmargin}%
                \item\relax}
               {\endlist}

您会看到,如果可能的话,执行定义的文件和行号会打印在输出中。-p不过,该选项通常不与一起使用。

相关内容