Nomes reservados em "função de declaração"?

Nomes reservados em "função de declaração"?

Esta deve ser a minha semana para pisar em palavras reservadas... por favor, veja este 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}

A segunda e quarta linha falham com

! Package PGF Math Error: Unknown operator `O' or `ON' (in 'ON').

! Package PGF Math Error: Unknown operator `O' or `OF' (in 'OFF(1)').

... e parece que está fazendo o mesmo com todas as constantes que começam a O criar problemas.

EUpensarEstou fazendo uma coisa muito boba...

Responder1

Atualizar:Isto tem sidofixoe seu documento deverá funcionar bem após o próximo TikLiberação Z/PGF.


Em pgfmathparser.code.texvocê vê:

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

sem um O.

Onão parece ser uma palavra-chave reservada (afinal, você recebe um erro “Operador desconhecido”), portanto acredito que seja um bug.

Fornecendo a definição que falta:

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

parece resolver o problema.

Só acho curioso que você seja a primeira pessoa a tentar usar um Olá :-)

informação relacionada