pgfmath 不起作用

pgfmath 不起作用

我想使用 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}

截屏

相关内容