与 upref 类似的用于 hyperrefs 的软件包

与 upref 类似的用于 hyperrefs 的软件包

我一直使用upref来删除 s 中的斜体。是否存在对s\ref执行相同操作的包?\hyperref

根据要求,给出一个最小的例子:

\begin{theorem}
Each \hyperref[def:bounded_sequence]{bounded sequence} in $\mathbb{R}^n$
has a convergent subsequence.
\end{theorem}

这里,“有界序列”具有通常的定理风格,但我想在没有它的情况下出现。

答案1

\hyperref用字体声明设置相应的条目\upshape

在此处输入图片描述

\documentclass{article}

\usepackage{hyperref,amsfonts}

\newtheorem{theorem}{Theorem}

\begin{document}

\begin{theorem}\label{def:bounded_sequence}
Some bounded sequence theorem.
\end{theorem}

\begin{theorem}
Each \hyperref[def:bounded_sequence]{\upshape bounded sequence} in $\mathbb{R}^n$
has a convergent subsequence.
\end{theorem}

\end{document}

对于全局设置你可以添加

\usepackage{letltxmacro}
\LetLtxMacro\oldhyperref\hyperref
\renewcommand{\hyperref}[2][]{\oldhyperref[#1]{\upshape #2}}

你的序言。

相反\upshape,您可以使用其他声明,如\normalfont

答案2

的强制参数\hyperref实际上是由辅助宏管理的\label@@hyperref,重新定义是错误的\hyperref,因为这会破坏命令为中和链接引用中的特殊字符而必须执行的所有设置。

\documentclass{article}

\usepackage{amsfonts}
\usepackage{etoolbox}
\usepackage{hyperref} % last one

\makeatletter
\patchcmd{\label@@hyperref}{\begingroup#3}{\begingroup\upshape#3}{}{}
\patchcmd{\label@@hyperref}{{#3}}{{\textup{#3}}}{}{}
\makeatother

\newtheorem{theorem}{Theorem}

\begin{document}

\begin{theorem}\label{def:bounded_sequence}
Some bounded sequence theorem.
\end{theorem}

\begin{theorem}                
Each \hyperref[def:bounded_sequence]{bounded sequence} in $\mathbb{R}^n$
has a convergent subsequence.
\end{theorem}

\end{document}

在此处输入图片描述

相关内容