创建 \eqref*(无链接的 \eqref,即带星号的 eqref)

创建 \eqref*(无链接的 \eqref,即带星号的 eqref)

我想创建一个命令\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的定义,并在 中使用中添加了。\eqrefamsmath.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}

相关内容