这肯定是我踩到保留字的一周...请看一下这个 MWE:
\documentclass{article}
\usepackage{tikz}
\newcommand{\formula}[1]{%
\pgfmathsetmacro{\rpval}{#1}%
\pgfmathprintnumberto[assume math mode=true, fixed, precision=3]{\rpval}{\frpval}%
\frpval
}
\begin{document}
\tikzset{declare function={%
R0 = 2.0;
X = 0.5*R0;
ON = 3;
OFF(\x) = \x + 1;
AFF(\x) = \x + 1;
}}
% works
X is \formula{X}
% fails
ON is \formula{ON}
% works
AFF is \formula{AFF(1)}
% fails
OFF is \formula{OFF(1)}
\end{document}
第二行和第四行失败
! Package PGF Math Error: Unknown operator `O' or `ON' (in 'ON').
! Package PGF Math Error: Unknown operator `O' or `OF' (in 'OFF(1)').
...并且似乎它对每个常数都做着同样的事情,从而O
产生了问题。
我思考我正在做一些非常愚蠢的事情......
答案1
更新:这已经固定的您的文档在下一个 Ti 之后应该可以正常工作钾Z/PGF 释放。
在pgfmathparser.code.tex
您看来:
\pgfmath@tokens@make{functional}{_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ}
没有O
。
O
似乎不是一个保留关键字(毕竟,您会收到“未知运算符”错误),因此我相信这是一个错误。
提供缺失的定义:
\makeatletter
\def\pgfmath@token@functional@O{O}
\makeatother
似乎解决了这个问题。
我只是觉得好奇,你是第一个尝试使用O
那里的人:-)