Hyperref“引用”元数据

Hyperref“引用”元数据

编辑:正如 Bill B. 和 Caramdir 在 Bill B. 生成下面发布的结果后在他们的评论中指出的那样,需要更多信息才能做出更好的判断。为了补救,我的输出是使用 MiKTeX 2.8 生成的,pdflatex没有特殊的命令行标志或开关。我的 pdf 查看器是 Adob​​e Acrobat Pro 9.0。平台是 Windows 7。包括在内的所有软件hyperref都完全更新到最新的版本和补丁。

我猜这是一个相当正常的设置,至少在 Windows 世界中是如此,因此我非常感兴趣(并且很感激)了解这个问题是否会影响其他人,或者它是否只是某种相当奇怪的一次性现象。在看到 Bill B 的结果(以及遍历 的hyperref代码之后)后,我的直觉是罪魁祸首是 Adob​​e 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

编辑:

我没有办法使用你正在使用的软件进行测试。但我可以告诉你如何缩小范围 - 分而治之。

  1. 在文本编辑器中打开 PDF 文件。(部分数据是二进制的,但元数据是 XML 格式的)
  2. 搜索所有出现的 a、b、c
  3. 查看引号是否是文件中存储的字符串的一部分。

如果引文不在 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 会显示引号。尝试使用 Adob​​e Acrobat Pro 9.5.4。

相关内容