pgfmathparse 基本用法

pgfmathparse 基本用法

请问我在这次测试中做错了什么:

\documentclass{article}


\usepackage{tikz}


\begin{document}
\begin{tikzpicture}

\pgfmathparse{10*2}
\node at (4,-5) {$2 \cdot 10 = \pgfmathresult$};

\end{tikzpicture}
\end{document}

它的输出是一行:

2 * 10 = -5.0

代替:

2 * 10 = 20

答案1

\pgfmathresult保存 pgfmath 最后一次计算的结果;在本例中,这是 y 坐标的求值(4,-5),恰好是 -5。用于\pgfmathsetmacro将结果分配给宏。

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \pgfmathsetmacro\result{10*2}
  \node at (4,-5) {$2 \cdot 10 = \result$};
\end{tikzpicture}
\end{document}

在此处输入图片描述

要获取整数值,请使用\pgfmathtruncatemacro而不是\pgfmathsetmacro。有关更多信息,请参阅TikZ 手册;在 3.0.1a 版本中,该主题在第 89 节第 923 页中介绍。

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \pgfmathtruncatemacro\result{10*2}
  \node at (4,-5) {$2 \cdot 10 = \result$};
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

tikz使用 s 时执行一些计算\node。这些计算是使用 完成的\pgfmathparse。因此,您的\pgfmathresult被其他内容覆盖。

相反,将 放在\pgfmathparse之前\pgfmathresult,或者\pgfmathresult在 评估之后立即存储以供稍后使用:

\documentclass{article}

\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
  \pgfmathparse{10*2}\edef\storeresult{\pgfmathresult}%
  \node at (4,-5) {$2 \cdot 10 = \pgfmathprintnumber\storeresult$};
  \node at (4,-6) {$2 \cdot 10 = \pgfmathparse{10*2}\pgfmathprintnumber\pgfmathresult$};
\end{tikzpicture}

\end{document}

相关内容