“聲明函數”中的保留名稱?

“聲明函數”中的保留名稱?

這一定是我踩保留字的一週......請看這個 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 後應該可以正常工作kZ/PGF 釋放。


pgfmathparser.code.tex你看到的:

\pgfmath@tokens@make{functional}{_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ}

沒有O.

O似乎不是保留關鍵字(畢竟,您會收到“未知運算符”錯誤),因此我相信這是一個錯誤。

提供缺失的定義:

\makeatletter
\def\pgfmath@token@functional@O{O}
\makeatother

似乎解決了問題。

我只是覺得奇怪,你是第一個嘗試在O那裡使用的人:-)

相關內容