我可以将最后一个索引包含在枚举标签内吗?

我可以将最后一个索引包含在枚举标签内吗?

我可以通过自动编号实现这样的效果吗?

Examples:
  1 of 93: Example one
  2 of 93: Example two
  ...
  92 of 93: Example ninety-two
  93 of 93: Example ninety-three

我可以更改枚举的标签,但我无法引用项目数量。

答案1

“自动”版本(灵感来自 Werner 的版本)。n” 可能会在运行几次 LaTeX 后出错,因为使用了\label-机制。但在这种情况下\ref您会收到警告。Label(s) may have changed.

环境中的A\label将引用项目编号(不带“的n”)。

\documentclass{article}
\usepackage{enumitem,calc}

\makeatletter
\newcounter{enumerateof} % to create unique labels
\newenvironment{enumerateof}
  {\stepcounter{enumerateof}
   \begin{enumerate}[
     label=\arabic* of \protect\ref{enof@\arabic{enumerateof}}:,
     ref=\arabic*,
     labelwidth=\widthof{\ref{enof@\arabic{enumerateof}} of \ref{enof@\arabic{enumerateof}}:},
     leftmargin=!]}
  {\addtocounter{\@enumctr}{-1}%
   \refstepcounter{\@enumctr}%
   \label{enof@\arabic{enumerateof}}%
   \end{enumerate}}
\makeatother

\begin{document}

\noindent X\dotfill X

\begin{enumerateof}
\item\label{a} a
\item b
\item c
\item d
\item e
\item f
\item g
\item h
\item i
\item j
\item k
\end{enumerateof}

Here's \ref{a}

\end{document}

在此处输入图片描述

答案2

以下解决方案类似如何使枚举项与左边距对齐?并需要标签来捕获列表中的最后一项。我相信如果需要的话它可以自动化:

在此处输入图片描述

\documentclass{article}
\usepackage{enumitem,calc}% http://ctan.org/pkg/{enumitem,calc}
\begin{document}
\noindent Here is some text.
\begin{enumerate}[
    labelindent=0pt,
    labelwidth=\widthof{\ref{last-item} of \ref{last-item}:},
    label={\arabic* of \ref{last-item}:},
    ref={\arabic*},
    itemindent=1em,
    leftmargin=!]
  \item An item
  \item An item
  \item An item \addtocounter{enumi}{9997}
  \item An item \label{last-item}
\end{enumerate}
Here is some more text.
\end{document}

如果您希望使用不同的对齐方式,可以将align=left键添加到枚举中。对于左对齐但水平对齐的枚举:,您可以使用,label={\arabic* of \ref{last-item}\hfill:}因为标签设置在框内:

在此处输入图片描述

\documentclass{article}
\usepackage{enumitem,calc}% http://ctan.org/pkg/{enumitem,calc}
\begin{document}
\noindent Here is some text.
\begin{enumerate}[
    labelindent=0pt,
    labelwidth=\widthof{\ref{last-item} of \ref{last-item}:},
    label={\arabic* of \ref{last-item}\hfill:},
    ref={\arabic*},
    itemindent=1em,
    leftmargin=!,align=left]
  \item An item
  \item An item
  \item An item \addtocounter{enumi}{9997}
  \item An item \label{last-item}
\end{enumerate}
Here is some more text.
\end{document}

相关内容