我使用hyperref
它的原因有很多,但其中之一就是它可以很好地设置文档属性。只要我用 XeLaTeX 编译就可以了。一旦我用 LuaLaTeX 编译,一切都会变得一团糟。在我的实际项目中,还有更多字段存在问题,但这是一个仅使用标题字段的 MWE:
\documentclass{scrartcl}
\usepackage{polyglossia}
\setmainlanguage{turkish}
\makeatletter
\usepackage[hidelinks]{hyperref}
\AtBeginDocument{%
\hypersetup{%
pdftitle = {\@title}
}
}{}
\makeatother
\title{RAB'BİN GÜNÜ}
\begin{document}
Title in document properties should match: RAB'BİN GÜNÜ
\end{document}
编译后xelatex
得到:
标题:拉宾·古努
但是lualatex
午餐吃了 Unicode 却消化不良:
标题:拉布班·戈尼奥
使用 LuaLaTeX 编译时,如何将正确的 Unicode 字符放入文档属性字段?
答案1
unicode
通过将选项传递给以下内容可以避免消化不良hyperref
:
\documentclass{scrartcl}
\usepackage{polyglossia}
\setmainlanguage{turkish}
\makeatletter
\usepackage[hidelinks,unicode]{hyperref}
\AtBeginDocument{%
\hypersetup{%
pdftitle = {\@title}
}
}{}
\makeatother
\title{RAB'BİN GÜNÜ}
\begin{document}
Title in document properties should match: RAB'BİN GÜNÜ
\end{document}
以下是输出pdfinfo -enc UTF-8 test.pdf
(仅相关部分)
LuaLaTeX
Title: RAB'BİN GÜNÜ
Subject:
Keywords:
Author:
Creator: LaTeX with hyperref package
Producer: LuaTeX-0.79.1
CreationDate: Tue Mar 24 12:01:09 2015
ModDate: Tue Mar 24 12:01:09 2015
西拉特克斯
Title: RAB'BİN GÜNÜ
Creator: LaTeX with hyperref package
Producer: xdvipdfmx (20140317)
CreationDate: Tue Mar 24 11:58:05 2015
答案2
解释了使用 LuaTeX 或 XeTeX 时行为不同的原因这里。XeTeX 使用xdvipdfmx
并且此转换器自动设置 UTF8 到 UCS2 的转换。另一方面,当我们使用直接 pdfTeX 原语(如在 LuaTeX 中)时,则必须在宏级别完成 UTF8 到 UCS2 的转换。hyperref
当设置了上述选项时,包会执行此操作unicode
。