请考虑以下文档(也位于背页):
\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}