有趣但难以阅读的带有反斜杠的书签

有趣但难以阅读的带有反斜杠的书签

以下文档给了我一个“好”的文档,但书签却是乱码。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{luacode}
\usepackage[unicode]{hyperref}
\begin{document}
\begin{luacode*}
tex.sprint("\\section{")
tex.sprint(-2,"Hellö \\wörld")
tex.sprint("}")
\end{luacode*}
foo bar baz
\end{document}

这是文档:

在此处输入图片描述

书签如下所示:

在此处输入图片描述

我该怎么做才能获得“正确”的书签?

答案1

转义字符还用于 PDF 字符串中的转义序列。裸反斜杠会造成混淆hyperref,因为它不知道它是打印的反斜杠还是 PDF 转义序列的开头。

为了更清楚,请使用\textbackslash。但这也不会起作用,因为 catcodes 错误(tex.sprint(-2, ...))。因此\textbackslash无法解析为宏。

下一步是使用内部表示\textbackslash(参见puenc.def):

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{luacode}
\usepackage[unicode]{hyperref}
\usepackage{bookmark}
\begin{document}
\begin{luacode*}
tex.sprint("\\section{\\texorpdfstring{")
tex.sprint(-2,"Hellö \\wörld")
tex.sprint("}{")
tex.sprint(-2,"Hellö \\80\\134wörld")
tex.sprint("}}")
\end{luacode*}
foo bar baz
\end{document}

(我已经添加了包bookmark,因为它可以更快地更新书签。)

答案2

只是猜测,但我认为你可能需要用 替换\\wörld\\\\wörld理由:

  • \\wörld在 Lua 中转换为
  • \wörld在 LaTeX 中,转换为
  • 无论\w宏做什么。

  • \\\\wörld在 Lua 中转换为
  • \\wörld在 LaTeX 中,转换为
  • 反斜杠后跟“wörld”。

相关内容