![根据枚举计数器的值更改标签分隔](https://linux22.com/image/409942/%E6%A0%B9%E6%8D%AE%E6%9E%9A%E4%B8%BE%E8%AE%A1%E6%95%B0%E5%99%A8%E7%9A%84%E5%80%BC%E6%9B%B4%E6%94%B9%E6%A0%87%E7%AD%BE%E5%88%86%E9%9A%94.png)
我正在尝试编写一个自定义列表,其中标签间距(文本和标签之间的间距)应根据标签中的数字数量而变化。例如,如果标签小于 10,则标签间距应为 0.36 英寸;对于 10 到 99 之间的标签,标签间距应为 0.27 英寸。
在第一步中,我尝试编写一个自定义列表,如果列表计数器等于 1,则应显示 foo,否则应显示 bar。但是,无论有多少条目,它都适用于最后一个 \item 条目。以下是 MWE。
\documentclass{article}
\usepackage{enumitem}
\usepackage{etoolbox}
\setlist[enumerate]{wide, align=left, topsep=0mm, parsep=0.20in, partopsep=0mm, itemsep=0in, labelindent=0pt, labelsep=0.36in}
\newenvironment{FirstList}[1][]{
\begin{enumerate}[#1] } {
\ifnumcomp{\theenumi}{=}{1}{
FOO } {
BAR}
\end{enumerate} }
\begin{document}
\begin{FirstList}
\item
\item
\item
\item
\end{FirstList}
\end{document}
答案1
如果您希望对每个项目应用测试,您可能需要在本地重新定义\item
。
\documentclass{article}
\usepackage{enumitem}
\setlist[enumerate]{wide, align=left, topsep=0mm, parsep=0.20in, partopsep=0mm, itemsep=0in, labelindent=0pt, labelsep=0.36in}
\newenvironment{FirstList}[1][]{\begingroup\let\olditem\item
\renewcommand\item{\olditem
\ifnum\value{enumi}=1
FOO
\else
BAR
\fi}
\begin{enumerate}[#1] } {
\end{enumerate} \endgroup}
\begin{document}
\begin{FirstList}
\item
\item
\item
\item
\end{FirstList}
\end{document}
然后,您可以\labelsep
在计数器的一些临界值处更改。这里我选择这个数字为 2,但您可以选择9
,99
等等。
\documentclass{article}
\usepackage{enumitem}
\setlist[enumerate]{wide, align=left, topsep=0mm, parsep=0.20in, partopsep=0mm, itemsep=0in, labelindent=0pt, labelsep=0.36in}
\newenvironment{FirstList}[1][]{\begingroup\let\olditem\item
\renewcommand\item{\olditem
\ifnum\value{enumi}=1
FOO
\else
BAR
\fi
\ifnum\value{enumi}=2
\addtolength\labelsep{-0.2in}
\fi}
\begin{enumerate}[#1] } {
\end{enumerate} \endgroup}
\begin{document}
\begin{FirstList}
\item
\item
\item
\item
\end{FirstList}
\end{document}