我可以通过自动编号实现这样的效果吗?
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}