如何防止部分章节名称成为目录中自动生成的超链接的一部分?

如何防止部分章节名称成为目录中自动生成的超链接的一部分?

有时我希望部分章节名称文本(以及子章节和任何进入目录的内容)显示出来,但它不是 pdflatex 和 htlatex 自动生成的链接的一部分。

这样,我可以在目录中注释一个部分名称,但不能通过 href 文本本身的一部分进行注释。

一个简单的例子会有所帮助。给出这个 .tex 文件,我将不想成为链接一部分的文本放在 \small{} 内,仅供说明。(我知道这是在 \section 中将字体变小的错误方法,但我现在不知道还有更好的方法)。

\documentclass[12pt,titlepage]{article}%

\usepackage{hyperref}

\begin{document}
\tableofcontents
\section{HW1 {\small{this hw was on subject x}}}
   jdkfjdkfjdf

\section{HW2 {\small{this hw was on subject y but is also related to subject x}}}

\end{document}

我希望生成的目录看起来如下所示,我画了这个来显示我想要链接的名称部分。

在此处输入图片描述

但现在得出的结论是:

在此处输入图片描述

并从 pdflatex 作为

在此处输入图片描述

可以看到 \section 里面的整个文本都带下划线。

使用的命令:htlatex foo.texpdflatex foo.tex

问题:制作目录时,是否有一个技巧或选项可以告诉 latex/pdflatex 不要在超链接中包含部分章节?

答案1

这是个建议。我不知道是否有任何缺点。

使用部分内的命令\notlinked来放置超链接的末尾。

\documentclass[12pt,titlepage]{article}%

\usepackage{hyperref}
\makeatletter
\let\@notlinked\relax
\def\notlinked{\noexpand\@notlinked}
\def\contentsline#1#2#3#4{%
  \begingroup
    \Hy@safe@activestrue
  \edef\x{\endgroup
    \def\noexpand\Hy@tocdestname{#4}%
  }\x
  \ifx\Hy@tocdestname\ltx@empty
    \csname l@#1\endcsname{#2}{#3}%
  \else
    \ifcase\Hy@linktoc % none
      \csname l@#1\endcsname{#2}{#3}%
    \or % section
      \csname l@#1\endcsname{%
        \in@{\@notlinked}{#2}
        \ifin@
           \def\@notlinked{\egroup\hyper@linkend\bgroup}
           \hyper@linkstart{link}{\Hy@tocdestname}\bgroup#2\egroup 
        \else
          \hyper@linkstart{link}{\Hy@tocdestname}\bgroup#2\egroup\hyper@linkend
        \fi
      }{#3}%
    \or % page
      \def\Hy@temp{#3}%
      \ifx\Hy@temp\ltx@empty
        \csname l@#1\endcsname{#2}{#3}%
      \else
        \csname l@#1\endcsname{{#2}}{%
          \hyper@linkstart{link}{\Hy@tocdestname}{#3}\hyper@linkend
        }%
      \fi
    \else % all
      \def\Hy@temp{#3}%
      \ifx\Hy@temp\ltx@empty
        \csname l@#1\endcsname{%
          \hyper@linkstart{link}{\Hy@tocdestname}{#2}\hyper@linkend
        }{}%
      \else
        \csname l@#1\endcsname{%
          \hyper@linkstart{link}{\Hy@tocdestname}{#2}\hyper@linkend
        }{%
          \hyper@linkstart{link}{\Hy@tocdestname}{#3}\hyper@linkend
        }%
      \fi
    \fi
  \fi
}

\begin{document}
\tableofcontents
\section{HW1\notlinked {\small{ this hw was on subject x}}}
   jdkfjdkfjdf

\section{HW2\notlinked
 {\small{ this hw was on subject y but is also related to subject x}}}

\end{document}

结果是:

在此处输入图片描述

相关内容