Fare in modo che i collegamenti hyperref vengano visualizzati solo se sono collegamenti esterni?
Sto cercando di creare un documento, ma non ho bisogno di hyperref per etichettare i link interni (poiché il documento è lungo solo poche pagine). Tuttavia, vorrei che i link mostrassero quel punto al di fuori del documento, ad esempio URL e file esterni. Non voglio che vengano visualizzate equazioni, riferimenti a numeri di pagina, note a piè di pagina, ecc.
Mi riferisco in particolare ai bordi colorati che appaiono intorno ai collegamenti (ma non vengono stampati).
\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}
Non riesco a impostare hidelinks
le opzioni e quindi impostare urlbordercolor
sembra, e non ho idea di come impostare un colore del bordo per essere trasparente (altrimenti potrei provare a impostare ogni tipo di colore del bordo su trasparente).
Inoltre, non so di che colore sia il blu per
Ho scoperto da questo post che urlbordercolor
impostazione predefinita, e mi piace molto, quindi preferirei non cambiarlo se possibile.
urlbordercolor
è {0 1 1}
di default; Inizialmente l'ho digitato male, quindi ho pensato di averlo sbagliato.
Non riesco a cambiare i bordi del collegamento in tutto bianco perché causa alcuni problemi di ritaglio:

Quindi penso che se volessi cambiare la situazione, i collegamenti dovrebbero essere resi trasparenti.
Grazie!
Risposte
Nel hyperref
bundle c'è un pacchetto aggiuntivo chiamato nohyperref
che definisce tutti i comandi di hyperref
ma non fa fare loro nulla. Questo pacchetto ha lo scopo di disabilitare completamente i collegamenti ipertestuali senza causare errori se i documenti utilizzano uno dei comandi definiti da hyperref
(ad esempio \hyperref
o \phantomsection
o uno qualsiasi dei comandi dei segnalibri).
Dopo il caricamento hyperref
normale, è possibile utilizzare parte del codice di questo pacchetto per disabilitare selettivamente solo le parti che non si desidera, ovvero i collegamenti interni, e lasciare inalterati gli altri comandi.
Modifica: come indicato nei commenti, potresti voler mantenere gli ancoraggi nel pdf per consentire il collegamento esterno. Questo vale solo per i collegamenti nel pdf (ad esempiohttp://mirrors.ctan.org/macros/latex/contrib/hyperref/doc/manual.pdf#subsection.3.8che si collega direttamente alla sottosezione 3.8 del manuale hyperref pdf), mentre i riferimenti 'esterni' all'interno di LaTeX (come con \input
o \include
o il xr-hyper
pacchetto) non sono influenzati da questo codice.
MWE per questo approccio:
\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}
Risultato:

Si noti che il codice inserito potrebbe disabilitare troppe o troppo poche funzionalità, controllare attentamente se si osservano effetti indesiderati.
Il seguente grezzo hack sembra funzionare con
- 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>
Ma non do garanzie come
Non ho approfondito lo studio dei file hyperref-driver.
valutare cose come pdfborder e pdfborderstyle non è solo una questione di versione e specifica pdf, ma è anche una questione di come funziona il programma utilizzato per visualizzare / visualizzare il file pdf in questione:
Tabella 164 - Voci comuni a tutti i dizionari di annotazione della specifica Portable Document Format (PDF) 1.7 dicono che la specifica del bordo (il
pdfborder=...
-thingie con hyperref) è di pattern
; le specifiche per i trattini sono opzionali; tutto quanto specificato in "unità di spazio utente predefinite"; la sezione 8.3.2.3 Spazio utente della specifica PDF (Portable Document Format) 1.7 dice che per impostazione predefinita un'unità di spazio utente è (1/72) pollice, cioè è 1bp (= 1 punto grande) secondo quanto detto nel Capitolo 10 : Dimensioni del TeXbook. (1bp = 1 punto grande = (1/72) pollice; 1pt = 1 punto stampante = (1 / 72,27) pollice.)[⟨horizontal corner radius⟩ ⟨vertical corner radius⟩ ⟨border width⟩[⟨length of dashes⟩ ⟨length of gap between dashes⟩]]
Se specifico
pdfborder={5 5 1 [3 2]}
, questo significa linee tratteggiate; trattini di lunghezza 3bp; gap tra trattini di lunghezza 2bp; spessore dei trattini 1bp; angoli arrotondati di raggio d'angolo 5bp sia verticale che orizzontale.Quando si visualizza il file pdf risultante con la versione Chromium 76.0.3809.100 (Developer-Build), non viene visualizzato alcun bordo.
Quando si visualizza il file pdf risultante con Firefox Quantum 69.0.2, vengono mostrate linee continue con angoli arrotondati.
Quando si visualizza il file pdf risultante con Okular 1.3.2 e Adobe Acrobat Reader DC versione 2020.012.20043, vengono visualizzate linee tratteggiate, non vengono visualizzati angoli arrotondati ma angoli squadrati.
Tieni presente che la nota a piè di pagina è ancora un collegamento, ma non è circondata da bordi colorati.
\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}
