在我的ocgx
包中,我会使用新ocg-p
包而不是ocg
包。使用 pdflatex 或 lualatex,一切都很好。但使用 xelatex,我显然不能使用\pdfstartlink
和(这些原语由或\pdfendlink
提供)。pdftex
luatex
如何用 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}%
}