我正在尝试绘制我需要的某条线的简单图,并且我使用条件来概括每种情况。
我的 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 保持正常状态,否则它会尝试除以零。