重新定义部分以包含超目标和工具提示

重新定义部分以包含超目标和工具提示

我希望部分和小节自动创建一个超目标(用于将外部 URL 链接到 pdf)和一个显示 URL 的 pdftooltip(以便可以发现 URL)

\section{\pdftooltip{Common Pressed Meats}{\#Common-Pressed-Meats}}\hypertarget{Common-Pressed-Meats}{}
\hypertarget{Canned-Pressed-Spam}{\subsection{\pdftooltip{Canned \& Pressed Spam}{\#Canned-Pressed-Spam}}}

这两行对我来说都适用,我的问题是如何重新定义\section\subsection以便\section{Common Pressed Meats}输出上述内容之一,并将标题文本(带有符号)转换为没有符号的有效 url,[它们几乎可以正常工作 - pdfbookmark ia“Common Pressed Meats#Common-Pressed-Meats”]

这是 pdflatex 的 MWE

\documentclass[english]{scrartcl}
\usepackage[latin9]{inputenc}
\usepackage{babel}
\usepackage[unicode=true,pdfusetitle,
 bookmarks=true,bookmarksnumbered=true,bookmarksopen=true,bookmarksopenlevel=1,
 breaklinks=true,pdfborder={0 0 1},backref=section,colorlinks=false]
 {hyperref}

\makeatletter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
\usepackage{pdfcomment}

\makeatother

\begin{document}
\section{\pdftooltip{Common Pressed Meats}{\#Common-Pressed-Meats}}\hypertarget{Common-Pressed-Meats}{}

The hypertarget is Common-Pressed-Meats or from the internet http://www.spam.com\#Common-Pressed-Meats

\hypertarget{Canned-Pressed-Spam}{\subsection{\pdftooltip{Canned \& Pressed Spam}{\#Canned-Pressed-Spam}}}

Invalid and special URL chars (i.e. most symbols) in the heading text
must be removed from the hypertarget and replaced with dash -

\hypertarget{Other-Pressed-Meats}{\section{\pdftooltip{Other Pressed Meats}{\#Other-Pressed-Meats}}}

The tooltip is over the heading text, and shows the hypertarget preceded
by \#
\end{document}

我想要做什么以及为什么?

我在网上有 pdf 格式的文档。它很详细,通常有 5-50 页长。在处理技术查询时,部分答案在文档中。我需要能够发送一个链接,该链接直接指向文档中解释我的观点的部分。链接(来自互联网的 url,或 pdf 术语中的命名目标)需要具有人类意义,并且我的答案在文档修订后的 3 个月内仍然有用(排除了“section.2.1.3”。我和任何其他用户都需要在阅读 pdf 时快速轻松地知道 url 是什么。这就是为什么有 tootip。否则命名目标太难用了,请注意,我对在 latex/pdf 内部使用超目标不感兴趣

答案1

如果您想要更多的符号锚点名称,您可以使用 KOMA-Script 的扩展可选参数功能(参见headings=optiontotocandhead下面示例中的选项)并添加一个新键来生成超目标:

\documentclass[
  headings=optiontotocandhead% Switch on extended optional arguments for headings
]{scrartcl}[2017/04/13]% Need at least KOMA-Script v3.23
\usepackage{hyperref}
\usepackage{lipsum}

\DefineFamilyKey[.section]{KOMAarg}{hypertarget}{%
  \hypertarget{#1}{}%
}

\begin{document}
\section[hypertarget={First.Section.Name}]{First Section Name}
\lipsum[1]
\section[hypertarget={Example.Section}]{Example Section}
\lipsum[2]
\section[hypertarget={Final.Section}]{Final Section}
See \hyperlink{First.Section.Name}{the first section} or
\hyperlink{Example.Section}{the second section} or
\hyperlink{Final.Section}{this final section}.
\end{document}

要添加工具提示,您可以尝试以下操作:

\documentclass[
  headings=optiontotocandhead% Switch on extended optional arguments for headings
]{scrartcl}[2017/04/13]% Need at least KOMA-Script v3.23
\usepackage{hyperref}
\usepackage{pdfcomment}
\usepackage{lipsum}

\FamilyStringKey[.section]{KOMAarg}{hypertarget}{\currenthypertarget}
\newcommand*{\currenthypertarget}{}
\makeatletter
\renewcommand*{\sectionlinesformat}[4]{%
  \ifx\currenthypertarget\@empty
    \def\currenthypertarget{#1.\csname the#1\endcsname}%
  \fi  
  \hypertarget{\currenthypertarget}{}\@hangfrom{\hskip
    #2#3}{\pdftooltip{#4}{\#\currenthypertarget}}%
  \global\let\currenthypertarget\@empty
}
\makeatother

\begin{document}
\section[hypertarget={First.Section.Name}]{First Section Name}
\lipsum[1]
\section[hypertarget={Example.Section}]{Example Section}
\lipsum[2]
\section[hypertarget={Final.Section}]{Final Section}
See \hyperlink{First.Section.Name}{the first section} or
\hyperlink{Example.Section}{the second section} or
\hyperlink{Final.Section}{this final section}.
\end{document}

使用 Adob​​e Reader 的第二个示例,例如,

书签+标题+工具提示

示例 PDF 是使用 制作的scrartcl 2017/04/13 v3.23

相关内容