The floating object (figure*
) spanning two columns is the culprit here, as it introduces an additional level of boxing of the output page containing the \pdfstartlink
which opens the citation hyperlink.
The page that follows is a "normal" two-column page without a float and thus the closing \pdfendlink
ends up in a box whose level is one less.
To remedy the situation, we could add one boxing level to the offending \pdfendlink
. For this, the example below defines
\addOneNestingLevelEndLink
which is inserted immediately before the offending \citep
command.
The opposite situation of a two-column float placed on the page where the citation hyperlink ends is possible too. Here, the boxing level of the \pdfstartlink
command must be increased. Therefore,
\addOneNestingLevelStartLink ,
likewise to be put in front of the citation command in question, is provided. Either one or the other of these commands may be used at a time.
Example (on ShareLaTeX):
\documentclass[a5paper,twocolumn]{scrartcl}
\usepackage{filecontents}
\begin{filecontents}{btxdoc.bib}
@BOOK{strunk-and-white,
author = "Strunk, Jr., William and E. B. White",
title = "The Elements of Style",
publisher = "Macmillan",
edition = "Third",
year = 1979 }
\end{filecontents}
\pagestyle{empty}
\usepackage{natbib}
\usepackage[colorlinks,citecolor=blue]{hyperref}
% For constructing the MWE
\usepackage{mwe,lipsum}
\bibliographystyle{chicago}
\makeatletter\ifdefined\Hy@StartlinkName
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% \addOneNestingLevelStartLink
% \addOneNestingLevelEndLink
%
% put ONE of \addOneNestingLevel(Start|End)Link in front of offending \cite
% depending on the placement of the double-column float object
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\addOneNestingLevelStartLink{%
\gdef\Hy@StartlinkName##1##2{%
\sbox0{\Hy@StartlinkNameOrig{##1}{##2}}\usebox0
\global\let\Hy@StartlinkName\Hy@StartlinkNameOrig%
}%
}
\def\addOneNestingLevelEndLink{%
\gdef\pdfendlink{%
\sbox0{\pdfendlinkOrig}\usebox0%
\global\let\pdfendlink\pdfendlinkOrig%
}%
}
\let\Hy@StartlinkNameOrig\Hy@StartlinkName
\let\pdfendlinkOrig\pdfendlink
\else
\let\addOneNestingLevelStartLink\relax
\let\addOneNestingLevelEndLink\relax
\fi
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\makeatother
\begin{document}
\begin{figure*}[t]
\includegraphics[width=\textwidth]{example-image-golden}
\end{figure*}
\lipsum[1]
\lipsum[1]
\lipsum[2]
Test line break:
\citep{strunk-and-white}
Works for first word.
\citep{strunk-and-white}
And for second.
Conclusion: Line breaks work well.
Now what happens if we force the break at the page boundary?
Let's take a look
We make this just long enough to break the link at page boundary
\addOneNestingLevelEndLink\citep{strunk-and-white}
\bibliography{btxdoc}
\end{document}
I think you can get the Print
flag set if you (ab)use the pdfa
option.
\usepackage[pdfa]{hyperref}
(see section "5.12 Option pdfa" of the hyperref manual).
This at least seems to work on my local installation (gs 9.25 as required. Without the pdfa
option and running your gs
command with -dPrinted the hyperlinks are dropped; with the pdfa
option the hyperlinks are preserved).
Best Answer
I'm using TikZ to draw the symbol: