我想使用 pgfmath 引擎,但结果不是我期望的。在这个例子中,我希望两条线的长度相同。
\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfmath}
\begin{document}
\begin{tikzpicture}
\draw[color=blue, very thick] (0,0) -- (2,0);
\pgfmathparse{ceil(1.7)} % Why is the red line shorter? It should be 2 units in length
\draw[color=red, very thick] (0,0.5) -- (\pgfmathresult,0.5);
\end{tikzpicture}
\end{document}
抱歉,这个问题似乎太愚蠢了,但我不知道哪里出了问题。谢谢你的帮助。
答案1
PGF在Ti中得到广泛应用钾Z. 在您调用的时候\pgfmathresult
,您的计算结果已被\draw
您使用之前的最后一条语句中的某些内容覆盖\pgfmathresult
。
为了避免这个问题,你可以在计算结果之后立即存储结果:
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[color=blue, very thick] (0,0) -- (2,0);
\pgfmathparse{ceil(1.7)}
\let\mylen\pgfmathresult
% This would also work, but \let means less work to do
% for TeX (thanks to egreg for the suggestion!)
% \edef\mylen{\pgfmathresult}
\draw[color=red, very thick] (0,0.5) -- (\mylen,0.5);
\end{tikzpicture}
\end{document}
但有一个捷径,即使用\pgfmathsetmacro
:
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[color=blue, very thick] (0,0) -- (2,0);
\pgfmathsetmacro{\mylen}{ceil(1.7)}
\draw[color=red, very thick] (0,0.5) -- (\mylen,0.5);
\end{tikzpicture}
\end{document}