我一直使用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}