以下文档给了我一个“好”的文档,但书签却是乱码。
\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”。