当链接靠近分页符时,章节标题无法正确转义字符

当链接靠近分页符时,章节标题无法正确转义字符

请考虑以下文档(也位于背页):

\documentclass{extbook}
\usepackage[utf8]{inputenc}
\usepackage{hyperref}
\usepackage{titlesec}
\usepackage{lipsum}

\begin{document}

\tableofcontents

% Note the escaped hash sign
\chapter{\#1: Test}

\lipsum[1-3]

% Extra lines just to force the link over the page
Foo

Bar

Baz

\href{http://example.com}{Test}

\end{document}

上述文档无法编译,并提示:

You can't use `macro parameter character #' in horizontal mode.

<argument> ...{\Hy@tocdestname }{\numberline {1}##
                                                  ##1: Test}\hyper@linkend 
l.1 ...er}{\numberline {1}##1: Test}{3}{chapter.1}

这种情况似乎发生在\href距离分页符正好一行的情况下(您可以通过添加/删除段落,或完全删除链接来查看这种情况)。

出于某种原因,我无法弄清楚链接何时确切地这个位置,目录文件.toc未能正确转义#章节标题中的符号。

有人知道为什么会发生这种情况,以及如何纠正它?

答案1

保护哈希(我还不知道为什么链接会使它变得脆弱):

\documentclass{extbook}
\usepackage[utf8]{inputenc}
\usepackage{hyperref}
\usepackage{titlesec}
\usepackage{lipsum}

\begin{document}

\tableofcontents

% Note the escaped hash sign
\chapter{\protect\#1: Test}

\lipsum[1-3]

% Extra lines just to force the link over the page
Foo

Bar

Baz

\href{http://example.com}{Test}

\end{document}

相关内容