Hyperref:更改所有链接的字体,包括脚注

Hyperref:更改所有链接的字体,包括脚注

我想将 生成的所有链接的字体更改hyperrefsffamily。为此,我使用该etoolbox包修补了\Hy@colorlink命令,如下所示:

\usepackage{etoolbox}
\makeatletter
\patchcmd{\Hy@colorlink}{\begingroup}{\begingroup\sffamily}{}{}%
\makeatother

这适用于除脚注之外的所有类型的链接。我不知道为什么会这样。下面提供了一个最小的工作示例,以方便您使用。

预先感谢您的帮助!

\documentclass{article}
\usepackage[colorlinks]{hyperref}
\usepackage{etoolbox}

% This throws an error
%\AtBeginDocument{%
%    \makeatletter
%    \patchcmd{\Hy@colorlink}{\begingroup}{\begingroup\sffamily}{}{}%
%    \makeatother
%}

\begin{document}
\makeatletter
\patchcmd{\Hy@colorlink}{\begingroup}{\begingroup\sffamily}{}{}%
\makeatother

\tableofcontents

\section{A section}\label{sec:toto}

\begin{enumerate}
    \item Pageref: page~\pageref{sec:toto}.
    \item All links have the new font except footnotes: One\footnote{One} two\footnote{Two} three.\footnote{Three}
\end{enumerate}

\end{document}

在此处输入图片描述

答案1

创建脚注标记的标准命令包含 \normalfont 命令。如果删除它,它就可以正常工作。

\documentclass{article}
\usepackage[colorlinks]{hyperref}
\usepackage{etoolbox}
\makeatletter
 \AtBeginDocument{%
    \patchcmd{\Hy@colorlink}{\begingroup}{\begingroup\sffamily}{}{}%
    \patchcmd{\@makefnmark}{\normalfont}{\selectfont}{}{}%
}
\makeatother
\begin{document}

\tableofcontents

\section{A section}\label{sec:toto}

\begin{enumerate}
    \item Pageref: page~\pageref{sec:toto}.
    \item All links have the new font except footnotes: One\footnote{One} two\footnote{Two} three.\footnote{Three}
\end{enumerate}

\end{document}

在此处输入图片描述

相关内容