在此 LaTeX 代码中,我尝试替换引用中的“(”,使它们看起来像“x)”,而不是“(x)”:
\documentclass{article}
\usepackage{enumitem}
\usepackage{xstring}
\begin{document}
\begin{enumerate}[label=(\alph*)]
\item \label{cla:Item1} an apple
\item \label{cla:Item2} a banana
\item a carrot, see \StrSubstitute{\ref{cla:Item1}}{(}{}
\item a durian, see \StrSubstitute{\ref{cla:Item2}}{(}{}
\end{enumerate}
\end{document}
但是,\StrSubstitute 似乎不起作用,所有引用仍然打印为“(x)”。
为什么 \StrSubstitute 不起作用?这是一个错误吗?
有没有什么解决方法?
答案1
它不能工作,因为\ref
生产需要的东西打印参考资料。
这比较容易。
\documentclass{article}
\usepackage{enumitem}
\begin{document}
\begin{enumerate}[label=(\alph*),ref=\alph*)]
\item \label{cla:Item1} an apple
\item \label{cla:Item2} a banana
\item a carrot, see \ref{cla:Item1}
\item a durian, see \ref{cla:Item2}
\end{enumerate}
\end{document}
你能用 来做\StrSubstitute
,但您必须使用refcount
提供 的可扩展版本\ref
并删除两对括号(或使用 的慢速功能来xstring
检查隐藏在括号中的内容),因为 返回的引用\ref{cla:Itemi1}
是{{(a)}}
。
\documentclass{article}
\usepackage{enumitem}
\usepackage{xstring}
\usepackage{refcount}
\makeatletter
\newcommand{\getenumitemref}[1]{%
\expandafter\expandafter\expandafter\@firstofone
\expandafter\@firstofone
\expanded{\getrefbykeydefault{#1}{}{0}}%
}
\makeatother
\begin{document}
\begin{enumerate}[label=(\alph*)]
\item \label{cla:Item1} an apple
\item \label{cla:Item2} a banana
\item a carrot, see \StrSubstitute{\getenumitemref{cla:Item1}}{(}{}
\item a durian, see \StrSubstitute{\getenumitemref{cla:Item2}}{(}{}
\end{enumerate}
\end{document}