钛钾Z 用户指南(版本 3.18b,第 1042 页)指出:
ifthenelse(x,y,z)
如果 x 的计算结果为某个非零值,则返回 y,否则返回 z。
看起来两个都 y
和 z
是首次评估和然后返回,这对我来说是一个惊喜;TeX\if
不会评估没用过选项——那么为什么 Ti钾Z 费心去评估没用过选项?我在徒劳地试图避免除以零时发现了这一点:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\pgfmathsetmacro{\foo}{0}
\pgfmathsetmacro{\foobar}{ifthenelse(equal(\foo,0),0,1)}\foobar
%% Both return the error: "You've asked me to divide `1' by `0'..."
% Uncomment the following to see the problem:
%\pgfmathsetmacro{\foobar}{ifthenelse(equal(\foo,0),0,1/\foo)}\foobar
%\pgfmathsetmacro{\foobar}{ifthenelse(greater(\foo,0),1/\foo,0)}\foobar
\end{document}
有许多非钛钾Z 方法(目前我已经确定了\ifdim\foo pt=0...\else...\fi
)。只是想知道什么是更 Ti钾可能是 Z 惯用方法。
答案1
别戳正在跳舞的熊。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\pgfmathsetmacro{\foo}{0}
\pgfmathsetmacro{\foobar}{ifthenelse(equal(\foo,0),0,1/ifthenelse(equal(\foo,0),1,\foo))}\foobar
\end{document}