hyperref 和加载重音

hyperref 和加载重音

这是我的 MWE:

\documentclass[a4paper,11pt]{article}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[frenchb]{babel}
\usepackage[pdftex,colorlinks=true,linkcolor=blue,citecolor=blue,urlcolor=blue]{hyperref}

\begin{document}

\tableofcontents

\addcontentsline{toc}{section}{this produces warnings : é}

é % or \phantom{é} this 'loads' é ?

\addcontentsline{toc}{section}{this does not produce warnings : é}

\end{document}

我花了一段时间才找到为什么只有第一个\addcontentsline收到警告,但看来我不能使用重音字符,只要我没有在其他地方使用它们......有没有办法解决这个问题?(除了我\phantom{é}目前在文档开头所拥有的......)

使用 Miktex 2.9,我最近更新了我的所有软件包。

注意:如果我使用\'e而不是é,它会起作用,但由于各种原因,我需要实际的é字符。

答案1

hyperref需要为 unicode 字符做好准备,例如直接使用é等。在文档中的某个地方输入é将对所有后续出现的情况进行此操作,但不会为前一个出现的情况进行此操作。理想情况下,它应该出现在序言中,但这是不可能的,因为不能进行排版。

é补救措施是在序言中“伪造”输出(以及可能的其他unicode字符)。

\PrerenderUnicode{é}这可以通过序言来实现。

顺便说一句:如果\PrerenderUnicode缺少书签,会有明确的警告,建议您\PrerenderUnicode在序言中添加;-)

\documentclass[a4paper,11pt]{article}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[frenchb]{babel}
\usepackage[pdftex,colorlinks=true,linkcolor=blue,citecolor=blue,urlcolor=blue,unicode]{hyperref}

\PrerenderUnicode{é}

\begin{document}

\tableofcontents

\addcontentsline{toc}{section}{this produces warnings : é}

%é % or \phantom{é} this 'loads' é ?

\addcontentsline{toc}{section}{this does not produce warnings : é}

\end{document}

我省略了屏幕截图,因为不需要这样的屏幕截图。


\PreenderUnicode澄清一下:如果在序言中没有应用,这里是在目录和书签中产生的警告。

在此处输入图片描述

答案2

最简单的解决方案是使用utf8而不是utf8x;过去有理由更喜欢后者(不是用法语写作时),但问题(希腊语)已经解决了。使用utf8xand ucs(这是隐含的),因为它比utf8and 更复杂,基本上没有任何优势。

\documentclass[a4paper,11pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[frenchb]{babel}
\usepackage[
  colorlinks=true,
  linkcolor=blue,
  citecolor=blue,
  urlcolor=blue,
]{hyperref}

\begin{document}

\tableofcontents

\addcontentsline{toc}{section}{no warning here : é}

é % or \phantom{é} this 'loads' é ?

\addcontentsline{toc}{section}{neither here : é}

\end{document}

在此处输入图片描述

相关内容