我使用该enumitem
包来设置计数器类型,例如大多数时候我不需要超过 3 个级别,这是我的首选设置:
\setlist[enumerate,1]{label={\arabic*)},ref={\arabic*)}}
\setlist[enumerate,2]{label={\roman*)},ref={\roman*)}}
\setlist[enumerate,3]{label={\alph*)},ref={\alph*)}}
为了以防万一我需要第四级,我已经设置了
\setlist[enumerate,4]{label={\Alph*)},ref={\Alph*)}}
但当然,以需要四个级别为条件,使用类似的东西会更令人愉快
\setlist[enumerate,1]{label={\arabic*)},ref={\arabic*)}}
\setlist[enumerate,2]{label={\Roman*)},ref={\Roman*)}}
\setlist[enumerate,3]{label={\roman*)},ref={\roman*)}}
\setlist[enumerate,4]{label={\alph*)},ref={\alph*)}}
所以我想要做的是在第一次运行 pdflatex 后找到最大级别数,然后根据该数字设置标签类型。有什么办法吗?
这是 MWE。在这个例子中,我有四个级别,并希望以这么多活动级别的存在为条件,然后在级别 2 中切换到 \Roman,在级别 3 中切换到 \roman。
\documentclass{amsart}
\usepackage{enumitem}
\setlist[enumerate,1]{label={\arabic*).},ref={\arabic*)}}
\setlist[enumerate,2]{label={\roman*)},ref={\roman*)}}
\setlist[enumerate,3]{label={\alph*)},ref={\alph*)}}
\setlist[enumerate,4]{label={\Roman*)},ref={\Roman*)}}
\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}
谢谢您的任何建议。
答案1
当然,只需使用该.aux
文件,例如像这样。
\documentclass{article}
\usepackage{enumitem}
\makeatletter
\newif\if@enumerate@leveliv@used
\AtBeginDocument{%
\if@enumerate@leveliv@used
\setlist[enumerate,1]{label={\arabic*)}}
\setlist[enumerate,2]{label={\Roman*)}}
\setlist[enumerate,3]{label={\roman*)}}
\setlist[enumerate,4]{label={\alph*)}, before*={\global\@enumerate@leveliv@usedtrue}}
\else
\setlist[enumerate,1]{label={\arabic*)}}
\setlist[enumerate,2]{label={\roman*)}}
\setlist[enumerate,3]{label={\alph*)}}
\setlist[enumerate,4]{label={\Alph*)}, before*={\global\@enumerate@leveliv@usedtrue}}
\fi
\@enumerate@leveliv@usedfalse
}
\AtEndDocument{%
\protected@write\@auxout{}{%
\global
\if@enumerate@leveliv@used
\protect\@enumerate@leveliv@usedtrue
\else
\protect\@enumerate@leveliv@usedfalse
\fi
}%
}
\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}
- 与文件一样
.aux
,您必须运行两次 LaTeX 才能使更改生效。 - 如果您希望
ref
拥有与 相同的值label
,则不必明确设置它。