Hyperref + Silence + 内联数学,无法编译

Hyperref + Silence + 内联数学,无法编译

问题

\( ... \)如果在章节标题等处,文档编译会挂起两个都hyperref 和 silent 已加载。

平均能量损失

\documentclass{article}

\usepackage{silence}
\usepackage{hyperref}

\title{Title}
\author{Author}

\begin{document}

\maketitle

\section{Hi \(a + b = c\)}

\end{document}

编译挂起的位置

编译输出结果如下

...
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def)
(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg)
(/usr/share/texlive/texmf-dist/tex/latex/url/url.sty))
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def
(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty))
(./temp.aux) (/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty))

答案1

似乎在https://tex.stackexchange.com/a/103486/4427避免了循环。

然而,书签中会包含虚假项目,因此最好加以利用\texorpdfstring

\documentclass{article}

\usepackage{silence}
\usepackage{hyperref}

\makeatletter
\protected\def\sl@Terminator{\sl@Terminator}
\makeatother

\title{Title}
\author{Author}

\begin{document}

\maketitle

\section{Hi \(a + b = c\)}

\section{Hi \texorpdfstring{\(a + b = c\)}{a+b=c}}

\end{document}

在此处输入图片描述

我会保留解决方法以避免无限循环,但是,正如您所见,第一种情况下的书签是错误的。

答案2

只需这样做不使用silence。此包最新更新于 2012 年,LaTeX 包已发生很大变化!

要查找编译文档中的错误,重要的是您可以看到所有错误和警告以及其他信息,以便能够识别您在生成的 pdf 中看不到的错误!

相关内容