问题

问题

我想使用\pgfmathprintnumber它来格式化\pgfmathresult但不打印它,因为我想将它用作由于某些难以理解的原因\TextField而不接受的值。\pgfmathprintnumber

\documentclass{article}
\usepackage{hyperref}

\usepackage{pgf}
\usepgflibrary{fpu}
\pgfkeys{
    /pgf/fpu = true,
    /pgf/number format/.cd,
    precision=2,
    fixed,
    fixed zerofill,
    use comma,
    1000 sep={.}
}

\begin{document}
    \pgfmathparse{1+2}
    \pgfmathprintnumber{\pgfmathresult}
    \begin{Form}
        \TextField[value={\pgfmathresult}]{}
    \end{Form}
\end{document}

输出

在此处输入图片描述

所以我认为这是有效的,因为执行\pgfmathprintnumber改变了的内容\pgfmathresult,一切都很好,除了我必须\pgfmathprintnumber在任意文本位置打印才能执行命令。

我试图用零宽度框隐藏\pgfmathprintnumber后面的输出\TextField,但是的执行\pgfmathprintnumber似乎安排\pgfmathresult在的执行之后\TextField

\documentclass{article}
\usepackage{hyperref}

\usepackage{pgf}
\usepgflibrary{fpu}
\pgfkeys{
    /pgf/fpu = true,
    /pgf/number format/.cd,
    precision=2,
    fixed,
    fixed zerofill,
    use comma,
    1000 sep={.}
}

\begin{document}
    \pgfmathparse{1+2}
    \makebox[0pt]{\pgfmathprintnumber{\pgfmathresult}}
    \begin{Form}
        \TextField[value={\pgfmathresult}]{}
    \end{Form}
\end{document}

输出

在此处输入图片描述

问题

  • 我是不是想错方向了?
  • 为什么\pgfmathprintnumber如果用作值会引发错误\TextField
  • \pgfmathresult有没有更好的方法来获得漂亮地打印的值的结果\TextField

答案1

您可以将打印命令存储在命令中。但它将包含文本字段中实际上不允许的内容。因此您将看到类似以下警告:

Package hyperref Warning: Token not allowed in a PDF string (PDFDocEncoding):
(hyperref)                removing `math shift' on input line 23.

因此,不要依赖打印预处理来在文本字段中做正确的事情。

\documentclass{article}
\usepackage{hyperref}

\usepackage{pgf}
\usepgflibrary{fpu}
\pgfkeys{
    /pgf/fpu = true,
    /pgf/number format/.cd,
    precision=2,
    fixed,
    fixed zerofill,
    use comma,
    1000 sep={.}
}

\begin{document}
\pgfmathparse{1+2}
\pgfmathprintnumberto{\pgfmathresult}\mytmpa
\begin{Form}
        \TextField[value=\mytmpa]{lbb}
\end{Form}
\end{document}

相关内容