如何在 (ii) 中的 ii 上添加上撇号?MWE:
\documentclass{article}
\usepackage{enumitem}
\begin{document}
\begin{enumerate}[label=(\roman*)]
\item\label{A} First
\item\label{B} Second
\item\label{C} Want to have (ii') here.
\item\label{D} Fourth
\end{enumerate}
Let's reference them: \ref{A}, \ref{B}, \ref{C} (want to have (ii') also here), and \ref{D}.
\end{document}
与此相反,我希望
(我先来
(二)第二
(ii') (ii)的另一个版本。
(三)第四
让我们参考它们:(i)、(ii)、(ii')、(iii)。
如何在 latex 中做到这一点而不对标准宏引入全局更改?我们仍然可以引入我们自己的新宏和对标准宏的局部更改。此外,我仍然想引用所有带有\ref{A}
、\ref{B}
、\ref{C}
、的项目\ref{D}
,而不是带有(\ref{A})
、(\ref{B})
、(\ref{C})
、 的项目(\ref{D})
。
建议在 enumitem 内联列表中引用自定义标签项不会将素数放入括号中(至少我不知道该怎么做)。全局删除括号,如下所示如何使用 enumitem 在引用项上添加下标?需要我手动将括号引入对书中所有剩余 100 多页的许多列表项的引用;这不是我想要的。(顺便说一句,那里对已接受答案的评论令人困惑。)我唯一想更改的乳胶代码部分实际上是有问题的列表及其周围环境,也许还有序言。
附录:另外使用 cleveref 时,请参见enumitem 和 cleveref 的问题。
答案1
主要问题是如何打印素数。
\documentclass{article}
\usepackage{textcomp}
\usepackage{enumitem}
\makeatletter
\newcommand\myprimeitem{%
\item[(\roman{enumi}\textquotesingle)]\def\@currentlabel{(\roman{enumi}\textquotesingle)}}
\makeatother
\begin{document}
\begin{enumerate}[label=(\roman*)]
\item\label{A} First
\item\label{B} Second
\myprimeitem\label{C} Second again
\item\label{D} Fourth
\end{enumerate}
Let's reference them: \ref{A}, \ref{B}, \ref{C}, \ref{D}
\end{document}
答案2
为此,不使用 enumitem 包会更容易。这样做的原因是\refstepcounter
使用\theenumi
但\item
(如包所定义)没有。(注意,这仅适用于第一级。计数器名称为 enumi、enumii、enumiii 等。)
\documentclass{article}
%\usepackage{enumitem}
\newcommand{\itemprime}[1]% #1 = contents (inside group)
{\bgroup% make changes local
\renewcommand{\theenumi}{(\roman{enumi}')}%
\addtocounter{enumi}{-1}%
\item#1
\egroup}
\begin{document}
\begin{enumerate}\renewcommand{\theenumi}{(\roman{enumi})}
\item\label{A} First
\item\label{B} Second
\itemprime{\label{C} Want to have (ii') here.}
\item\label{D} Fourth
\end{enumerate}
Let's reference them: \ref{A}, \ref{B}, \ref{C} (want to have (ii') also here), and \ref{D}.
\end{document}