覆盖默认引用工具提示

覆盖默认引用工具提示

我正在尝试为每个内联引用添加一个工具提示。到目前为止,我使用 pdfcomment 几乎可以正常工作:

\documentclass{article}
\usepackage[colorlinks=true]{hyperref}
\usepackage{pdfcomment}


\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{Bli74,
  author = {Blinder, Alan S.},
  year = {1974},
  title = {The economics of brushing teeth},
}
\end{filecontents}

\usepackage{usebib}
\bibinput{\jobname}

\makeatletter
  \let\@internalcite\cite
  \renewcommand{\cite}[1]{%
  \pdftooltip{\@internalcite{#1}}{\usebibentry{#1}{title}}}
\makeatother

\begin{document}
This is a citation: \cite{Bli74}.

\bibliographystyle{apalike}
\bibliography{\jobname}
\end{document}

但是,由于我的 Mac 的 Preview.app 中的引文“转到第 1 页”链接,似乎有一个默认的工具提示。我看到我的自定义工具提示正在工作,但仅限于引文的细边界(包括小括号)。

动画 gif 展示正在发生的事情

有没有办法重新定义 cite 命令以避免出现此工具提示并仅对整个引用使用我的自定义提示?

同时,我还想处理多个引用:\cite{thing1,thing2}。如何提取(以逗号分隔)并向 thing1 和 thing2 添加工具提示?

答案1

问题在于,您在几乎相同的位置定义了两个所谓的 PDF 注释。一个用于工具提示,另一个用于超链接,从技术上讲,超链接也是一种 PDF 注释。

您可以使用以下方法关闭超链接:

\usepackage[colorlinks=true,draft]{hyperref}

因此在这种情况下,您只能选择其中一个而不能选择另一个!

那么使用 PDF 文本注释怎么样?

PDF文本注释(1)

PDF文本注释(2)

\documentclass{article}
\usepackage[colorlinks=true]{hyperref}
\usepackage{pdfcomment}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{Bli74,
  author={Blinder, Alan S.},
  year={1974},
  title={The economics of brushing teeth},
}
\end{filecontents}
\usepackage{usebib}
\newbibfield{author}
\bibinput{\jobname}
\makeatletter
  \let\@internalcite\cite
  \renewcommand{\cite}[1]{%
  \@internalcite{#1}\pdfcomment[icon=Help,author=Reference:]{\usebibentry{#1}{author} (\usebibentry{#1}{year})\textCR\usebibentry{#1}{title}}}
\makeatother
\begin{document}
This is a citation: \cite{Bli74}.
\bibliographystyle{apalike}
\bibliography{\jobname}
\end{document}

编辑:

为了获得更微妙的外观,您可以使用空的和不可见的 PDF 标记突出显示注释:

PDF 标记突出显示注释

\documentclass{article}
\usepackage[rgb]{xcolor}
\usepackage[colorlinks=true]{hyperref}
\usepackage{pdfcomment}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{Bli74,
  author={Blinder, Alan S.},
  year={1974},
  title={The economics of brushing teeth},
}
\end{filecontents}
\usepackage{usebib}
\newbibfield{author}
\bibinput{\jobname}
\makeatletter
\let\@internalcite\cite
\renewcommand{\cite}[1]{%
  \mbox{%
    \@internalcite{#1}%
    \hbox to 0pt{% 
      \raisebox{1ex}{%
        \pdfmarkupcomment[color=yellow,opacity=0,author=Reference:]%
          {}%
          {\usebibentry{#1}{author} (\usebibentry{#1}{year})\textCR%
           \usebibentry{#1}{title}}}}}%
}%
\makeatother
\begin{document}
This is a citation: \cite{Bli74}.
\bibliographystyle{apalike}
\bibliography{\jobname}
\end{document}

编辑2:

对于没有额外标记的观众,您可以使用自己的标记,例如小问号。您还应该增加opacity

\let\@internalcite\cite
\renewcommand{\cite}[1]{%
  \mbox{\textcolor{blue}{%
    \@internalcite{#1}%
    \ifpc@gopt@final\else%
      \hbox to 0pt{% 
        \raisebox{1ex}{\tiny%
          \pdfmarkupcomment[color=yellow,opacity=0.5,author=Reference:]%
            {?}%
            {\usebibentry{#1}{author} (\usebibentry{#1}{year})\textCR%
             \usebibentry{#1}{title}}}}%
    \fi%
    }%
  }%
}%
\makeatother

用问号突出显示注释

编辑3:

或者使用工具提示再次执行相同的操作:

带问号的工具提示注释

\makeatletter
\let\@internalcite\cite
\renewcommand{\cite}[1]{%
  \mbox{\textcolor{blue}{%
    \@internalcite{#1}%
    \ifpc@gopt@final\else%
      \hbox to 0pt{% 
        \raisebox{1ex}{\tiny%
          \pdftooltip[color=yellow,opacity=0.5,author=Reference:]%
            {\fboxsep1pt\fcolorbox{blue}{yellow}{?}}%
            {\usebibentry{#1}{author} (\usebibentry{#1}{year})\textCR%
             \usebibentry{#1}{title}}}}%
    \fi%
    }%
  }%
}%
\makeatother

相关内容