隐藏链接后重置 hyperref 的默认设置

隐藏链接后重置 hyperref 的默认设置

我想要的是禁用\hypersetup{hidelinks}。我可以在组内使用它,但这不是一个好主意。这是一个 MWE。

\documentclass{article}

\usepackage{hyperref}

\begin{document}
\tableofcontents
{\hypersetup{hidelinks} 
\section{bla}\label{aa}  link text and anchore are hidden \ref{bb}}

\section{bla}\label{bb} here back to defaut \ref{aa}

But what I want is

\hypersetup{hidelinks} 
\section{bla}\label{cc}  link text and anchore are hidden \ref{dd}

%some thing like 
%\hypersetup{hidelinks=off }  
\section{bla}\label{dd} here back to defaut \ref{cc}

\end{document}

答案1

使用风险自负:

\documentclass{article}

\usepackage[colorlinks]{hyperref}

\makeatletter
\newif\ifhidelinks@hidelinks
\newcommand{\hidelinks}{%
  \hidelinks@hidelinkstrue
  \let\hidelinks@ifHy@colorlinks@status\ifHy@colorlinks
  \let\hidelinks@ifHy@ocgcolorlinks@status\ifHy@ocgcolorlinks
  \let\hidelinks@ifHy@frenchlinks@status\ifHy@frenchlinks
  \let\hidelinks@Hy@colorlink\Hy@colorlink
  \let\hidelinks@Hy@endcolorlink\Hy@endcolorlink
  \let\hidelinks@@pdfborder\@pdfborder
  \let\hidelinks@@pdfborderstyle\@pdfborderstyle
  \hypersetup{hidelinks}%
}
\newcommand{\restorelinks}{%
  \ifhidelinks@hidelinks
    \hidelinks@hidelinksfalse
    \let\ifHy@colorlinks\hidelinks@ifHy@colorlinks@status
    \let\ifHy@ocgcolorlinks\hidelinks@ifHy@ocgcolorlinks@status
    \let\ifHy@frenchlinks\hidelinks@ifHy@frenchlinks@status
    \let\Hy@colorlink\hidelinks@Hy@colorlink
    \let\Hy@endcolorlink\hidelinks@Hy@endcolorlink
    \let\@pdfborder\hidelinks@@pdfborder
    \let\@pdfborderstyle\hidelinks@@pdfborderstyle
  \fi
}
\makeatother

\begin{document}
\tableofcontents

\hidelinks
\section{bla}\label{cc}  link text and anchore are hidden \ref{dd}

\restorelinks
\section{bla}\label{dd} here back to defaut \ref{cc}

\end{document}

我以前colorlinks可以更好地显示链接。如果命令之前曾在同一分组级别出现过\restorelinks,则将恢复到以前的情况,否则它什么也不做。\hidelinks

在此处输入图片描述

相关内容