不久前(TeX Live 2013),xelatex 将超目标的标签存储在 PDF 中。然后(至少在 TeX Live 2016 中)行为发生了变化,里面不再有符号名称。
我怎样才能找回这些名字?
一个例子:
\documentclass{article}
\usepackage[verbose]{hyperref}
\begin{document}
An anchor for postprocessing:
\hypertarget{ID01234567}{}
\end{document}
使用 xelatex 编译文档后,我检查了其内部结构:
$ qpdf --stream-data=uncompress test.pdf - | gvim -
我想要的是找到:
<< /Names [ (Doc-Start) 7 0 R (ID01234567) 8 0 R (page.1) 9 0 R ] >>
我使用 TeX Live 2013 获得了预期的结果,但使用 2016 却没有。
2018 年 7 月 30 日更新
我在较新的系统上生成了 XDV(而不是 PDF),并在较旧的系统上将 XDV 转换为 PDF。我已获取目标。因此,问题很可能出在dvipdfm
。以下是供以后调查的变更日志:
http://www.tug.org/svn/texlive/trunk/Build/source/texk/dvipdfm-x/spc_pdfm.c?view=log
答案1
这在手册的第 11 节中被记录为不兼容的更改。选项的dvipdfmx
位位置可用于禁用优化 PDF 目标。计数以 开头,因此位位置对应于。您可以在使用以下方式调用 XeLaTeX 时传递此标志5
-C
1
5
16
xelatex -output-driver="xdvipdfmx -C 16" test.tex
如果您使用 Windows,您可能需要另一种方式来引用该命令。