在 hyperref pdfinfo 中的作者姓名和标题中使用非 ASCII 字符

在 hyperref pdfinfo 中的作者姓名和标题中使用非 ASCII 字符

我正在尝试生成一个pdflatex带有参考资料的 PDF 文件(使用)hyperref;标题和作者都应作为 pdf 属性可见,并且都包含重音符号或非 us-ASCII。文档的其余部分使用\documentclass[a4paper,openright]{book}\usepackage[utf8]{inputenc}和可以很好地编译\usepackage[spanish]{babel}

我希望这能起作用:

\usepackage[pdftex,colorlinks=true,
    % ...
    pdftitle={Título con acentos o eñes},
    pdfauthor={Migueláñez}
]{hyperref}

——它会产生大约 54 个警告,并输出类似

Title:          T19 tulo con acentos o en126 nes
Author:         Miguela19 an126 nez
Creator:        LaTeX with hyperref package
Producer:       pdfTeX-1.40.10

我也尝试过让 pdfauthor 保持空白,然后使用

\pdfstringdef{myauthor}{Miguel\'{a}\~{n}ez}

或者

\pdfstringdef{myauthor}{Migueláñez}

\hypersetup{pdfauthor={\myauthor}}

但所有变体都会导致错误而不是警告。

答案1

尝试使用命令设置属性,\hypersetup{...}而不是在加载时直接提供它们hyperrefhyperref 手册,第 4 页):

\usepackage[colorlinks=false]{hyperref}
\hypersetup{pdftitle={A Perfect Day}}

如上例所示,信息条目(pdftitle、pdfauthor……)应在包加载后设置。否则 LaTeX 会过早扩展这些选项的值。

因此,以下代码对我来说运行良好,并在 Adob​​e Reader 中显示正确的作者和标题:

\documentclass[a4paper,openright]{book}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage[pdftex,colorlinks=true]{hyperref}
\hypersetup{pdftitle={Título con acentos o eñes},pdfauthor={Migueláñez}}
\begin{document}
    The document
\end{document}

答案2

虽然我认为迪亚博纳斯回答更适合西班牙语或其他非英语文档,无论如何它们都会使用inputencbabel我喜欢发布一个没有它们也能工作的答案。以防有人用非 ASCII 字母编写了纯英语文档。尤其是当你最小化使用的包数量时。

诀窍是按照以下方式转义非 ASCII 字符。请注意,您不能将它们用作包选项,因为 LaTeX 内核\<number>首先扩展序列并抱怨 eg\3未定义。\hypersetup它们在内部工作正常:

\documentclass{book}
\usepackage{hyperref}
\hypersetup{%
    pdfauthor={Miguel\341\361ez},
    pdftitle={T\355tulo con acentos o e\361es}
}
\begin{document}
   Text
\end{document}

结果(的输出pdfinfo file.pdf):

Title:          Título con acentos o eñes
Subject:        
Keywords:       
Author:         Migueláñez
...

所需特殊字符数量的列表如下: http://www.pjb.com.au/comp/diacritics.html

答案3

我知道已经提供了两个答案,但我认为我的答案不同,而且非常方便。为什么要在序言中加载某些内容?如果使用输入,最好指定标题在现实中文件档案,因为它在逻辑上应该在那里。如果你使用 UTF-8 和 unicode 设置编辑文件,只需使用

\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage[unicode=true,,]{hyperref} %with more options specified if you like

那么这样做就没有问题了

\newcommand\longtitle{Właśnie tu długi tytuł} %translation: long title
\newcommand\authors{Przemysław Majewski}
\newcommand\headtitle{A tu króciutki} %translation: short title for headers

然后简单说明

%pdf authors and titles for hyperref ---> document specific
\hypersetup{
  pdfauthor={\authors},
  pdftitle={\longtitle},
  pdfsubject={},
  pdfkeywords={hypergeometric,,}
 }

它有用吗?

相关内容