如何为枚举环境引入动态计数器?

如何为枚举环境引入动态计数器?

我想使用数字:“1。”,“2。”,“3。”,...但最后一项(“n。”)是个例外,而不是“10。”例如,我想使用“(9 + 1)”。

答案1

[编辑使端点变得“动态”。

这看起来像是一个工作枚举项更具体地说,您可以使用\AddEnumerateCounter来定义枚举计数器的特殊处理以产生:

在此处输入图片描述

(为了节省空间,我将其格式化为两列。)

LaTeX 代码并不太繁琐。我定义了一个名为 的新环境bracketted。您可以像使用普通枚举环境一样使用此环境。不同之处在于,bracketted环境中的项目会自动以我认为 OP 想要的方式进行标记。

为了使端点“动态”,bracketted环境接受一个可选参数(默认为9问题中的 as),用于指定计数器的打印应更改的位置。环境bracketted本身包装了一个类似于枚举的环境,称为internalbracketted。此环境使用枚举项包,它用于更改项目编号的打印方式。您可以通过修改手册中描述的规范\AddEnumerateCounter来更改此环境的格式。\setlist[internalbracketted]{...}enumitem

\documentclass{article}
\usepackage{enumitem}
\usepackage{multicol}

\AddEnumerateCounter{\SpecialTen}{\SpecialTen}{(9+1)}
\makeatletter
\newcommand\SpecialTen[1]{%
   \ifnum\value{#1}>\specialValue%
     \@tempcnta=\value{#1}\advance\@tempcnta by-\specialValue%
     (\specialValue+\@arabic\@tempcnta)%
     \else\arabic{#1}%
     \fi%
}
\makeatother
\newlist{internalbracketted}{enumerate}{1}
\setlist[internalbracketted]{nosep,label=\SpecialTen*.}
\newenvironment{bracketted}[1][9]{\def\specialValue{#1}\internalbracketted}
   {\endinternalbracketted}

\begin{document}\begin{multicols}{2}
  With 3 being special:

  \begin{bracketted}[3]
    \item \item \item \item \item
   \end{bracketted}

  With 4 being special:

  \begin{bracketted}[4]
    \item \item \item \item \item
   \end{bracketted}

   \columnbreak
  With 9 being special (the default):

  \begin{bracketted}    % with no optional argument the special value defaults to 9
    \item \item \item \item \item
    \item \item \item \item \item
  \end{bracketted}

\end{multicols}\end{document}

尽管 OP 只要求对最后一个项目编号进行特殊处理,但这会更改“特殊”值之后的所有项目标签——毕竟你必须对它们做些什么,而且先验地,没有办法提前知道哪个\item是最后一个。

我仍然不清楚这是否是 OP 想要的,因为动态的含义并没有真正解释清楚,但这可能就足够了。如果 OP 想要自动检测最后一个\item那么这是可能的,但需要不同的方法。如果 OP 提供了完整的最小工作示例并更好地解释他们所寻找的东西。

答案2

实现目标的一个简单方法是\finalitem在枚举环境中使用命令,并按您想要的方式格式化最后一个命令item。这可能不是您希望的“动态”方式,因为它不是自动的,它依赖于您作为用户finalitem始终将命令放在最后一项。

\documentclass{article}
\newcommand\finalitem{\item[(\theenumi+1.)]}
\begin{document}
\begin{enumerate}
\item 
\item 
\finalitem 
\end{enumerate}
\end{document}

相关内容