我在 LaTeX 类中有以下宏:
\def\labelenumi{\theenumi.}
\def\theenumi{\arabic{enumi}}
\def\labelenumii{(\theenumii)}
\def\theenumii{\alph{enumii}}
\def\p@enumii{\theenumi}
\def\labelenumiii{\theenumiii.}
\def\theenumiii{\roman{enumiii}}
\def\p@enumiii{\theenumi(\theenumii)}
\def\labelenumiv{\theenumiv.}
\def\theenumiv{\Alph{enumiv}}
\def\p@enumiv{\p@enumiii\theenumiii}
我知道这些是用于编号的,但我不太明白。有人能解释一下它们的作用以及如何使用它们吗?我有一个相关的问题。现在我有点困惑。我发现我的 latex 类中在上述宏之后定义了另一组宏。下面是一个例子:
\def\labelitemi{\m@th\bullet}
\def\labelitemii{\bfseries --}
\def\labelitemiii{\m@th\ast}
\def\labelitemiv{\m@th\cdot}
\begin{document}
\begin{enumerate}
\item
level 1
\begin{enumerate}
\item
level 2
\begin{enumerate}
\item
level 3
\begin{enumerate}
\item
level 4
\end{enumerate}
\end{enumerate}
\end{enumerate}
\end{enumerate}
这些似乎与我之前提到的宏所做的工作相同。但这个更简单!由于两者都包括在内,我想知道是否存在我忽略的细微差别。
提前致谢。
答案1
这些定义了枚举列表的标签。
\documentclass{article}
\makeatletter
\def\labelenumi{\theenumi.}
\def\theenumi{\arabic{enumi}}
\def\labelenumii{(\theenumii)}
\def\theenumii{\alph{enumii}}
\def\p@enumii{\theenumi}
\def\labelenumiii{\theenumiii.}
\def\theenumiii{\roman{enumiii}}
\def\p@enumiii{\theenumi(\theenumii)}
\def\labelenumiv{\theenumiv.}
\def\theenumiv{\Alph{enumiv}}
\def\p@enumiv{\p@enumiii\theenumiii}
\makeatother
\begin{document}
\begin{enumerate}
\item level 1
\begin{enumerate}
\item level 2
\begin{enumerate}
\item level 3
\begin{enumerate}
\item level 4
\end{enumerate}
\end{enumerate}
\end{enumerate}
\end{enumerate}
\end{document}
答案2
latexenumerate
根据嵌套级别使用不同的计数器。顶级枚举使用enumi
项目内部的枚举,而项目内部的枚举则使用enumii
等。
这些设置了计数器使用的打印样式。采用第二级
\def\labelenumii{(\theenumii)}
\def\theenumii{\alph{enumii}}
\def\p@enumii{\theenumi}
\theenumi
是通常的the
...与每个乳胶计数器相关联,并给出其默认打印格式。这里\alph
是 a、b、c、...
\labelenumi
是此处枚举标签中使用的形式(a)
,(b)
等等,括号仅用于标签中,而不\theenumii
用于交叉引用或计数器的其他用途。
\p@enumi
是交叉引用中使用的前缀。因此这里是\theenumi
周围项的打印形式,因此如果此枚举在外部列表的第 2 项中,并且这是此列表的第 2 项,\p@enumi
则将为标2
有的此项\ref
生成。2b
(b)