问题
\( ... \)
如果在章节标题等处,文档编译会挂起两个都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 中看不到的错误!