如何使用 xetex 模拟 \pdfstartlink 和 \pdfendlink?

如何使用 xetex 模拟 \pdfstartlink 和 \pdfendlink?

在我的ocgx包中,我会使用新ocg-p包而不是ocg包。使用 pdflatex 或 lualatex,一切都很好。但使用 xelatex,我显然不能使用\pdfstartlink和(这些原语由或\pdfendlink提供)。pdftexluatex

如何用 xetex 模拟这两个原语?

ocgx这是我的包中当前代码的示例:

\long\def\switchocg#1#2{%
  \def\ocgx@list{}%
  \ocgx@listOCG#1 ENDOFOCGS %
  \leavevmode%
  \pdfstartlink user {%
    /Subtype /Link
    /A << /S/SetOCGState /State [/Toggle \ocgx@list] >>
    /Border [0 0 0]
  }%
  #2\pdfendlink%
}

答案1

根据texdoc dvipdfmx这对特别节目

\special{pdf:bann <<dict>>}
\special{pdf:eann}

允许使用 dvipdfmx/XeTeX 生成可分解注释,类似于 pdfTeX 命令\pdfstartlink/ pdfendlink

因此,

\long\def\switchocg#1#2{%
  \def\ocgx@list{}%
  \ocgx@listOCG#1 ENDOFOCGS %
  \leavevmode%
  \special{pdf:bann <<
    /Subtype /Link
    /A << /S/SetOCGState /State [/Toggle \ocgx@list] >>
    /Border [0 0 0]
  >>}%
  #2%
  \special{pdf:eann}%
}

相关内容