从 pgfmathdeclarefunction 中提取数组

从 pgfmathdeclarefunction 中提取数组

所以如果我有

\pgfmathdeclarefunction{yeet}{...}{
\begingroup
\def\temp{#1}
\pgfmathsmuggle\temp
\endgroup
}

如何将 \temp 保存到新变量/数组中。以 {1,2,3} 格式?如果我使用 pgfmathparse,它只会将数组转换为数字字符串。但是,这是我知道的运行函数“yeet”的唯一方法。即使我找到了将 #1 转换回 {1,2,3} 格式的方法,我仍然无法使用 pgfmathparse 提取它,从而将其重新转换为 123

答案1

您可以将数组视为字符串,从而使其保持“完整”。

\documentclass{article}
\usepackage{pgf}
\pgfmathdeclarefunction{yeet}{...}{\begingroup
\edef\pgfmathresult{#1}%
\pgfmathsmuggle\pgfmathresult\endgroup}
\begin{document}
\pgfmathparse{yeet("{1,2,3}")}\pgfmathresult
\typeout{\pgfmathresult}

\pgfmathparse{yeet("{{1,2,3},{4,5,6}}")}\pgfmathresult
\typeout{\pgfmathresult}

\pgfmathparse{yeet({1,2,3})}\pgfmathresult
\typeout{\pgfmathresult}

\pgfmathparse{yeet({{1,2,3},{4,5,6}})}\pgfmathresult
\typeout{\pgfmathresult}

\end{document}

控制台上的输出是

1,2,3
{1,2,3},{4,5,6}
{{1}{2}{3}}
{{{1}{2}{3}}{{4}{5}{6}}}

如您所见,如果没有,"数组就会“转换”为可以作为普通宏的参数的东西。为什么?因为这样您就可以将具有多个参数的函数转换f(x,y,...)为 TeX 可以消化的东西。pgfmanual v3.1.5 的第 1047 页对此进行了明确描述

在此处输入图片描述

不过,您很可能不是在寻找用 pgf 声明的函数,而只是寻找一个普通的宏。很难说,因为在我看来,您的问题相当模糊,难以回答。如果您真的想开发自己的 LaTeX 代码来制作 3D 动画,那么第一步就是学习编写 MWE,然后提出切中要害的问题。否则,您和本网站上的其他用户可能只是在浪费时间。

相关内容