Fazer com que links hyperref apareçam apenas se forem links externos?
Estou tentando fazer um documento, mas não preciso do hyperref para rotular links internos (já que o documento tem apenas algumas páginas). Gostaria, no entanto, que os links aparecessem fora do documento, por exemplo, urls e arquivos externos. Não quero equações, referências de número de página, notas de rodapé, etc. aparecendo.
Refiro-me especificamente às bordas coloridas que aparecem ao redor dos links (mas não são impressas).
\documentclass{article}
\usepackage{hyperref}
\begin{document}
Here's some test text with a footnote\footnote{Some text, but the footnote shouldn't show up as a link.}.
\url{http://www.google.com} %this should show up as a link.
\href{http://www.google.com}{Go to Google} %this should also show up as a link.
\end{document}
Não consigo definir hidelinksas opções e, em seguida, definir o urlbordercolorque parece, e não tenho ideia de como definir uma cor de borda para ser transparente (ou poderia tentar definir cada tipo de cor de borda para transparente).
Eu também não sei qual é a cor Descobri nesta postagem que o urlbordercolorpadrão do azul
, e eu realmente gosto disso, então prefiro não mudar se possível.
urlbordercoloré {0 1 1}por padrão; Eu apenas digitei errado originalmente, então pensei que tinha errado.
Não consigo alterar as bordas do link para todas brancas porque isso causa alguns problemas de recorte:
Então eu acho que se eu quisesse mudar isso, os links precisariam ser transparentes.
Obrigado!
Respostas
No hyperrefpacote existe um pacote adicional chamado nohyperrefque define todos os comandos do, hyperrefmas não os faz nada. Este pacote tem como objetivo desabilitar os hiperlinks completamente sem causar erros se os documentos usarem qualquer um dos comandos definidos por hyperref(por exemplo, \hyperrefou \phantomsectionou qualquer um dos comandos de indicador).
Depois de carregar hyperrefnormalmente, você pode usar parte do código deste pacote para desabilitar seletivamente apenas as partes que você não quer, ou seja, links internos, e deixar os outros comandos intocados.
Editar: conforme observado nos comentários, você pode querer manter as âncoras no pdf para permitir links externos. Isso se aplica a links em PDF apenas (por exemplohttp://mirrors.ctan.org/macros/latex/contrib/hyperref/doc/manual.pdf#subsection.3.8que se conecta diretamente à subseção 3.8 do manual pdf do hyperref), enquanto as referências 'externas' dentro do LaTeX (como com \inputou \includeou o xr-hyperpacote) não são afetadas por este código.
MWE para esta abordagem:
\documentclass{article}
\usepackage{hyperref}
\makeatletter
% first six lines of nohyperref.sty
% keep anchors
%\let\hyper@@anchor\@gobble
\def\hyper@link#1#2#3{#3}%
%\let\hyper@anchorstart\@gobble
%\let\hyper@anchorend\@empty
\let\hyper@linkstart\@gobbletwo
\let\hyper@linkend\@empty
\makeatother
\begin{document}
\section{A section}
\label{mysec}
Here's some test text with a footnote\footnote{Some text, but the
footnote shouldn't show up as a link.}
in Section~\ref{mysec} on page~\pageref{mysec}.
\url{http://www.google.com} %this should show up as a link.
\href{http://www.google.com}{Go to Google} %this should also show up as a link.
\end{document}
Resultado:
Observe que o código inserido pode desativar muita ou pouca funcionalidade, verifique cuidadosamente se você observar quaisquer efeitos indesejados.
O seguinte hack bruto parece funcionar com
- pdflatex -
This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2019/dev/Debian) (preloaded format=pdflatex)...LaTeX2e <2018-12-01> - xelatex -
This is XeTeX, Version 3.14159265-2.6-0.99999 (TeX Live 2019/dev/Debian) (preloaded format=xelatex)...LaTeX2e <2018-12-01> - lualatex -
This is LuaTeX, Version 1.07.0 (TeX Live 2019/dev/Debian)...LaTeX2e <2018-12-01>
Mas eu não dou garantias de
Eu realmente não mergulhei em estudar os arquivos de driver do hyperref.
avaliar coisas como pdfborder e pdfborderstyle não é apenas uma questão de versão e especificação do pdf, mas também uma questão de como funciona o programa usado para visualizar / exibir o arquivo PDF em questão:
Tabela 164 - Entradas comuns a todos os dicionários de anotação da especificação Portable Document Format (PDF) 1.7 diz que a especificação de borda (o
pdfborder=...-thingie com hyperref) é de padrão
; as especificações para travessões são opcionais; tudo especificado em "unidades de espaço do usuário padrão"; seção 8.3.2.3 Espaço do usuário do Portable Document Format (PDF) especificação 1.7 diz que por padrão uma unidade de espaço do usuário é (1/72) polegada, ou seja, é 1bp (= 1 ponto grande) de acordo com o que é dito no Capítulo 10 : Dimensões do TeXbook. (1 bp = 1 grande ponto = (1/72) polegada; 1pt = 1 ponto da impressora = (1 / 72,27) polegada.)[⟨horizontal corner radius⟩ ⟨vertical corner radius⟩ ⟨border width⟩[⟨length of dashes⟩ ⟨length of gap between dashes⟩]]Se eu especificar
pdfborder={5 5 1 [3 2]}, isso significa linhas tracejadas; travessões de comprimento 3bp; intervalo entre travessões de comprimento 2bp; espessura dos travessões 1bp; cantos arredondados com raio de canto 5bp vertical e horizontal.Ao exibir o arquivo pdf resultante com o Chromium versão 76.0.3809.100 (Developer-Build), nenhuma borda será exibida.
Ao exibir o arquivo pdf resultante com o Firefox Quantum 69.0.2, as linhas sólidas com cantos arredondados são mostrados.
Ao exibir o arquivo PDF resultante com Okular 1.3.2 e Adobe Acrobat Reader DC Versão 2020.012.20043, então linhas tracejadas, sem cantos arredondados, mas cantos quadrados são mostrados.
Esteja ciente de que a nota de rodapé ainda é um link, mas não está cercada por bordas coloridas.
\documentclass{article}
\usepackage{iftex}
\usepackage[colorlinks=false,
%allbordercolors={},
%citebordercolor={0 1 0},
%filebordercolor={0 .5 .5},
%linkbordercolor={1 0 0},
%menubordercolor={1 0 0},
%urlbordercolor={0 1 1},
%runbordercolor={0 .7 .7},
%pdfborder={0 0 1},
%pdfborderstyle={/S/S/W 1}
]{hyperref}
\makeatletter
\Hy@AtBeginDocument{%
\ifxetex
\edef\@innerlinkbordercolor#1]{\@linkbordercolor]/BS<</S/S/W 0>>}%
\def\@linkbordercolor{\@innerlinkbordercolor}%
\fi
\ifluatex\ifpdf
\edef\@innerlinkbordercolor#1]{\@linkbordercolor]/BS<</S/S/W 0>>}%
\def\@linkbordercolor{\noexpand\@innerlinkbordercolor}%
\fi\fi
\ifPDFTeX\ifpdf
\edef\@innerlinkbordercolor#1]{\@linkbordercolor]/BS<</S/S/W 0>>}%
\def\@linkbordercolor{\noexpand\@innerlinkbordercolor}%
\fi\fi
}%
\makeatother
\begin{document}
Here's some test text with a footnote\footnote{Some text, but the footnote shouldn't show up as a link.}.
\url{http://www.google.com} %this should show up as a link.
\href{http://www.google.com}{Go to Google} %this should also show up as a link.
\end{document}