在哪里可以找到 \item 定义来重新定义它?

在哪里可以找到 \item 定义来重新定义它?

\item我想修改环境中使用的参数{list}。在我的 LaTeX 发行版中哪里可以找到原始定义以供复制和修改?

答案1

如果您不是 TeXpert ,不建议修改\item(实际上是列表环境的定义)的定义。有许多长度参数可以由非经验用户自定义。它们列在下面。

(摘自 Lamport 的书)

下面是如何重置所有项目中段落之间的垂直间距的示例:

\begin{itemize}
\setlength{\parskip}{3pt plus 3pt minus 1pt}
\item 
1st paragraph

2nd paragraph

...
\end{itemize}

请注意,垂直长度是可拉伸的;在这个例子中,\parskip它通常是 3 点 (pt),但可以小到 2 pt,大到 6 pt(或者更大,我不确定)。如果

\setlength{\parskip}{3pt plus 3pt minus 1pt}

放在环境内部,它只对环境中的特定事件起作用。您可能还想将其放在外部:

\setlength{\parskip}{3pt plus 3pt minus 1pt}

...

\begin{itemize}
\item 
1st paragraph

2nd paragraph

...
\end{itemize}

答案2

好吧,source2e.pdf 可能是此上下文中的规范参考。texdoc source2e应该提供它(或者您可以在 CTAN 上找到它)。它全部位于第 56 节“列表和相关环境”中。不过,有几件事需要考虑:

  1. 您使用的包或类可能会进行一些重新定义,您必须考虑到这一点。

  2. 某些包可能已经提供了您想要的功能。例如,包enumitem提供了许多自定义列表及其参数的方法。

答案3

如果你不知道在哪里寻找定义,你可以使用texdef。要将其与 LaTeX 定义一起使用,您必须使用选项调用它-t latex或使用相应的别名latexdef(如果您的系统上定义了别名)。

要检查定义,\item您可以发出texdef -t latex \item。要检查定义的位置,请添加选项-f

texdef -t latex -f item

在我的系统上它返回:

\item is defined by (La)TeX.

\item:
macro:->\@inmatherr \item \@ifnextchar [\@item {\@noitemargtrue \@item [\@itemlabel ]}

据说它是由 LaTeX 定义的,表明它是在 LaTeX 源中定义的,并且您可以通过发出来获取其文档texdoc source2e

如果您想要查看可用选项texdef或了解更多信息,您可以通过 访问其文档texdoc texdef

相关内容