在 tikzmath 中使用 \ifthenelse

在 tikzmath 中使用 \ifthenelse

我正在尝试绘制我需要的某条线的简单图,并且我使用条件来概括每种情况。

我的 MWE 是:

\documentclass{article}

\usepackage{ifthen}        

\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\pgfplotsset{my style1/.append style={clip = false, axis lines* = middle, axis equal, xtick = \empty, ytick = \empty}}

\usepackage{tikz}
\usetikzlibrary{calc, math, fpu} 

\begin{document}

\ifthenelse{4=3}{hi}{bye}

\begin{tikzpicture}
    \tikzmath{
        \lra = 1;
        \lrb = -3;
        \dor = 0;
        \ifthenelse{\lra = 0}{\dor = 4/\lrb}{\dor = 4/\lra};
    }   
    \begin{axis}[my style1, samples=200]
        \addplot [red, domain=-\dor:\dor] ({x*\lra},{x*\lrb});
    \end{axis}
\end{tikzpicture}   

    
\end{document}  

但我收到错误“\ifthenelse 的参数有一个额外的 }”。我不明白为什么。在普通文本中使用 \ifthenelse 就可以了。

任何帮助,将不胜感激。

答案1

您应该使用该ifthenelse函数。但略有复杂,因为真分支和假分支中的表达式都会被求值,并且不能除以零。

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{calc, math, fpu}

\begin{document}

\tikzmath{
  \lra = 1;
  \lrb = -3;
  \dor = ifthenelse(\lra == 0, 4/\lrb, 4/(or(\lra,1)*\lra));
}
\show\dor

\tikzmath{
  \lra = 0;
  \lrb = -3;
  \dor = ifthenelse(\lra == 0, 4/\lrb, 4/(or(\lra,1)*\lra));
}
\show\dor

\end{document}
> \dor=macro:
->4.0.
l.13 \show\dor

?
> \dor=macro:
->-1.33333.
l.20 \show\dor

在第二种情况下,该or函数会让 PGF 保持正常状态,否则它会尝试除以零。

相关内容