背景
我正在排版某个数学对象的条件列表。有三个条件。稍后我希望为第三个条件提供一个等效条件。因此,最好有这样的编号:
c) 条件 1
b) 条件 2
c) 条件 3
而稍后会有
c') 条件 3(替代方案)
我的想法是使用 a\label{c}
表示原始条件并写入
\item[\ref{c}]\label{c-prime} ...
并希望能够以这种方式引用 c')。但\ref{c-prime}
结果是定义的数量,而不是枚举计数器的数量。
解决方案
我有一个解决方案,基于计数器的硬编码起点和固定布局。使用enumitem
我可以写
\begin{enumerate}[label=\alph*'),ref=(\alph*'),start=3]
一切顺利
问题
但也有一些缺点:
- 我必须手动选择柜台的起点,因此无法自动更改顺序;
- 标签和参考的格式是硬编码的,如果我更改全局格式,我仍然必须在本地进行调整。
我该怎么做才能让它更加灵活?
我知道这是一个相当学术的问题,因为它已经起作用了,但我很好奇
答案1
该enumitem
软件包为您提供了更多功能——您可以创建enumerate
类似列表的环境并全局设置其格式。然后,您可以使用计数器保存当前项目的值,以便start
稍后提供。
\documentclass{article}
\usepackage{lipsum}% just for blind text
\usepackage{enumitem}
\newlist{conditions}{enumerate}{1}
\newlist{altconditions}{enumerate}{1}
\setlist[conditions]{label=\alph*),ref=(\alph*)}
\setlist[altconditions]{label=\alph*$'$),ref=(\alph*$'$)}
\newcounter{favoritecondition}
\begin{document}
\lipsum[1]
\begin{conditions}
\item condition 1
\item condition 2
\item condition 3\label{c}\setcounter{favoritecondition}{\value{conditionsi}}
\item condition 4
\end{conditions}
\lipsum[2]
An alternative to condition \ref{c} is
\begin{altconditions}[start=\value{favoritecondition}]
\item\label{c-prime} condition 3 alternative
\end{altconditions}
We leave as an exercise to the reader that \ref{c} and \ref{c-prime} are equivalent.
\end{document}