我想创建一个命令\eqref*
,它与 相同,但没有可点击的链接。 ( ) 和( )\eqref
有类似的命令可以实现此行为,但 不能。\ref
\ref*
\autoref
\autoref*
\eqref
\newcommand{\myeqref}[1]{(\ref*{#1})}
可以工作,但我不喜欢这个命名,并且还有一个问题:\eqref
即使在斜体数学环境中也将数字直立起来,\ref
不会这样做。
任何帮助都将受到赞赏。
[ 编辑:针对搜索引擎:eqref、eqref*、eqrefstar、starred eqref、eqrefasterisk、asterisked eqref、eqref star、eqref asterisk ]
答案1
这里借鉴了 Joseph Wright 的LaTeX3
解决方案定义带星号的命令版本(* 宏)
% arara: pdflatex
\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}
\let\oldeqref\eqref
\makeatletter
\RenewDocumentCommand\eqref{s m}{%
\IfBooleanTF#1%
{\textup{\tagform@{\ref*{#2}}}}% If a star is seen
{\oldeqref{#2}}% If no star is seen
}
\makeatother
\usepackage{hyperref}
\begin{document}
\begin{equation}
a=b \label{1}
\end{equation}
\begin{itemize}
\item starred version: \eqref*{1}
\item unstarred version: \eqref{1}
\end{itemize}
\end{document}
答案2
这并不能准确回答您的问题,因为我定义了\Eqref
而不是带星号的。我只是复制了\eqref
的定义,并在 中使用中添加了。\eqref
amsmath.sty
*
\ref
\documentclass{article}
\usepackage{amsmath}
\usepackage{hyperref}
\makeatletter
\newcommand{\Eqref}[1]{\textup{\tagform@{\ref*{#1}}}}
\makeatother
\begin{document}
\begin{equation}
a=b \label{1}
\end{equation}
\Eqref{1} \eqref{1}
\end{document}
答案3
解决方案:感谢 Torbjørn T. 和 oerpli,这里是另一个解决方案:
\makeatletter
\def\eqref{\@ifstar\@eqref\@@eqref}
\def\@eqref#1{\textup{\tagform@{\ref*{#1}}}}
\def\@@eqref#1{\textup{\tagform@{\ref{#1}}}}
\makeatother
一个有效的例子:
\documentclass{article}
\usepackage{amsmath}
\newtheorem{theorem}{theorem}
\usepackage{hyperref}
\makeatletter
\def\eqref{\@ifstar\@eqref\@@eqref}
\def\@eqref#1{\textup{\tagform@{\ref*{#1}}}}
\def\@@eqref#1{\textup{\tagform@{\ref{#1}}}}
\makeatother
\begin{document}
\begin{equation}
a=b \label{1}
\end{equation}
\begin{theorem}
A standard ref is italic in math mode: \ref{1} \\
A standard ref* is also italic in math mode: \ref*{1} \\
An eqref is upright: \eqref{1}\\
And so is the new eqref*: \eqref*{1}
\end{theorem}
\end{document}