我想使用\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}