命令中的 `pgfmathresult`

命令中的 `pgfmathresult`

以下代码不起作用:

\documentclass{standalone}
\usepackage{pgfplots}

\usetikzlibrary{positioning, calc}

\newcommand\machin{
\pgfmathparse{1}
\pgfmathresult
}

\pgfmathsetmacro\truc{\machin}

\begin{document}

\end{document}

有人知道我怎样才能让我的命令\machin返回一个我可以使用的结果\pgfmathsetmacro吗?

感谢您的帮助

编辑:我想做类似的事情:

\newcommand\longueur[4]{
\pgfmathparse{((#1-#3)^2+(#2-#4)^2)^0.5}
\pgfmathresult
}

\newcommand\setEchelle[6]{
\pgfmathsetmacro\Echelle{500*(#6)/3.6/\longueur{#1}{#3}{#4}{#5}}
}

答案1

您不能\longueur在 的参数中使用\pgfmathsetmacro,因为 中的命令\pgfmathparse不可扩展。您可以定义一个\setlongueur宏,\pgfmathsetmacro像在

\newcommand\setlongueur[4]{%
    \pgfmathsetmacro\temp{((#1-#3)^2+(#2-#4)^2)^0.5}
}

\newcommand\setEchelle[6]{%
  \setlongueur{#1}{#3}{#4}{#5}%
  \pgfmathsetmacro\Echelle{500*(#6)/3.6/\temp}
}

或者你使用不同的方法expl3

\usepackage{xparse} % also loads expl3
\ExplSyntaxOn
\DeclareExpandableDocumentCommand{\longueur}{mmmm}
 {
  \fp_eval:n {((#1-#3)^2+(#2-#4)^2)^0.5}
 }

\NewDocumentCommand{\setEchelle}{mmmmmm}
 {
  \tl_set:Nx \Echelle
   {
    \fp_eval:n {500*(#6)/3.6/\longueur{#1}{#3}{#4}{#5}}
   }
}
\ExplSyntaxOff

完整示例。首先使用 TikZ 的 calc 包。

\documentclass{standalone}
\usepackage{pgfplots}

\usetikzlibrary{positioning, calc}
\newcommand\setlongueur[4]{%
    \pgfmathsetmacro\temp{((#1-#3)^2+(#2-#4)^2)^0.5}
}

\newcommand\setEchelle[6]{%
  \setlongueur{#1}{#3}{#4}{#5}%
  \pgfmathsetmacro\Echelle{500*(#6)/3.6/\temp}
}

\begin{document}

\setEchelle{1}{2}{3}{4}{5}{6}\Echelle

\end{document}

这输出

231.1417

现在同样如此expl3

\documentclass{standalone}

\usepackage{xparse}
\ExplSyntaxOn
\DeclareExpandableDocumentCommand{\longueur}{mmmm}
 {
  \fp_eval:n {((#1-#3)^2+(#2-#4)^2)^0.5}
 }

\NewDocumentCommand{\setEchelle}{mmmmmm}
 {
  \tl_set:Nx \Echelle
   {
    \fp_eval:n {500*(#6)/3.6/\longueur{#1}{#3}{#4}{#5}}
   }
 }
\ExplSyntaxOff

\begin{document}

\setEchelle{1}{2}{3}{4}{5}{6}\Echelle

\end{document}

这输出

231.1250817605121

可以使用以下方式限制小数位数round

\fp_eval:n {round(500*(#6)/3.6/\longueur{#1}{#3}{#4}{#5},4)}

你会得到

231.1251

相关内容