电子表单文本字段中带有可选参数的宏

电子表单文本字段中带有可选参数的宏

这是我的代码:

\documentclass{article}

\usepackage{polyglossia}
\usepackage[useui]{eforms}

\newcommand{\myvalue}[1][]{Testvalue #1}

\begin{document}
    \textField[\ui{value={\myvalue[foo]}}]{Text}{2em}{1em}
\end{document}

当我尝试编译它时,我得到:

Package hyperref Warning: Token not allowed in a PDF string (Unicode):
(hyperref)                removing `\myvalue' on input line 9.

(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/se-ascii-print.def)
! Undefined control sequence.
\in@ #1#2->\begingroup \def \in@@
                                  ##1#1{}\toks@ \expandafter {\in@@ #2{}{}#1...
l.9 ...\ui{value={\myvalue[foo]}}]{Text}{2em}{1em}

即使我没有设置可选参数,也会发生这种情况。当我从宏中删除该参数或将其设为必需参数时,错误就会消失。为什么?我如何在这里使用带有可选参数的宏?

答案1

你不能。该值被转换为 PDF 字符串,而不是由 TeX 排版。因此,在转换过程中 TeX 的胃口不可用。这意味着,分配、定义、不可扩展的宏将不起作用,甚至可能中断。\futurelet在 LaTeX 中,对可选参数的扫描是通过分配实现的。因此,\futurelet将作为垃圾逐字写入 PDF 字符串,因为 PDF 查看器不知道 TeX 命令。而应该由 定义的宏\futurelet未定义,导致接下来的扩展步骤出现问题。

您已经找到了一种解决方法,即使用必需参数而不是可选参数。

相关内容