编辑:正如 Bill B. 和 Caramdir 在 Bill B. 生成下面发布的结果后在他们的评论中指出的那样,需要更多信息才能做出更好的判断。为了补救,我的输出是使用 MiKTeX 2.8 生成的,pdflatex
没有特殊的命令行标志或开关。我的 pdf 查看器是 Adobe Acrobat Pro 9.0。平台是 Windows 7。包括在内的所有软件hyperref
都完全更新到最新的版本和补丁。
我猜这是一个相当正常的设置,至少在 Windows 世界中是如此,因此我非常感兴趣(并且很感激)了解这个问题是否会影响其他人,或者它是否只是某种相当奇怪的一次性现象。在看到 Bill B 的结果(以及遍历 的hyperref
代码之后)后,我的直觉是罪魁祸首是 Adobe Acrobat 或可能是 MiKTeX pdflatex
。
有人能证实吗?我会非常感激的。
原始问题:
我有一个问题hyperref
;如果发送给这些的数据包含逗号或分号(但不包含句号或冒号),它会“引用”作者和关键字(但不包含标题或主题)元数据。
我在下面添加了一些图表和代码来展示这一点。
\documentclass{article}
\newcommand*\metadata{%
% uncomment all but one line below
% a b c% <-- no problem
a, b, c% <-- problem
% a; b; c% <-- problem
% a: b: c% <-- no problem
% a* b* c% <-- no problem
}
\usepackage[
pdftitle={\metadata}, % never enquoted
pdfauthor={\metadata}, % enquoted if , or ; is present
pdfsubject={\metadata}, % never enquoted
pdfkeywords={\metadata}, % enquoted if , or ; is present
]{hyperref}
\begin{document}
Press ctl-d (in Acrobat Reader) to see pdf file metadata.
\end{document}
这不仅非常丑陋,而且更重要的是,它会干扰某些文档存储库使用的元数据提取程序。
我已经尝试了hyperref
的代码,但没有成功。有人能解决这个问题吗?或者有人能告诉我我可能做错了什么吗?
答案1
编辑:
我没有办法使用你正在使用的软件进行测试。但我可以告诉你如何缩小范围 - 分而治之。
- 在文本编辑器中打开 PDF 文件。(部分数据是二进制的,但元数据是 XML 格式的)
- 搜索所有出现的 a、b、c
- 查看引号是否是文件中存储的字符串的一部分。
如果引文不在 PDF 中,那么问题就出在 Acrobat 上。
如果引号在那里,那么问题就出在 MikTex 方面,要么是在 PDF 生成中,要么可能是 Latex 方面更深层次的问题。
原始回应:
恐怕我无法回答你。
但是,我将上述代码剪切粘贴到一个新文件中,并进行编译,得到如下结果:
所以,无论问题是什么,它一定与您的软件版本或配置有关。
答案2
我使用该hyperxmp
包修复了这个问题。
\documentclass{article}
\usepackage{hyperxmp} % <-- added
\newcommand*\metadata{%
a, b, c% <-- problem
}
\usepackage[
pdftitle={\metadata}, % never enquoted
pdfauthor={\metadata}, % enquoted if , or ; is present
pdfsubject={\metadata}, % never enquoted
pdfkeywords={\metadata}, % enquoted if , or ; is present
]{hyperref}
\begin{document}
Press ctl-d (in Acrobat Reader) to see pdf file metadata.
\end{document}
此包以 Acrobat 不显示引号的格式添加元数据(使用版本 DC 2015.009.20077 测试)。
答案3
我在 Windows Vista 上使用 Acrobat Reader,看到了您描述的问题。(正如您已经发现的那样,我使用 MiKTeX 2.7 可能无关紧要。)我没有解决方案,但可以进行另一项测试来证明 Acrobat 确实是罪魁祸首:使用可以处理二进制文件的编辑器编辑 pdf 文件,并用冒号替换逗号/Author(a, b, c)
。这会使引号消失。
答案4
我注意到了同样的效果,这绝对是 Acrobat 的产物,而不是 PDFLateX。如果作者字段包含逗号,Acrobat 会显示引号。尝试使用 Adobe Acrobat Pro 9.5.4。