tikz の関数

tikz の関数

もし私が関数を持っているなら

function(a, b)
    print(a+b)

これを tikz 言語に翻訳して、「a」と「b」が必要になるようにするにはどうすればよいでしょうか。

hello = 1
bye = 2

function(hello, bye)

出力は3となる。

答え1

関数は と呼ばれますadd。その周りにマクロをラップすることができます。

\documentclass{article}
\usepackage{pgf}
\newcommand{\myaddandprint}[2]{\pgfmathparse{add(#1,#2)}\pgfmathprintnumber\pgfmathresult}
\newcommand{\myparseandprint}[1]{\pgfmathparse{#1}\pgfmathprintnumber\pgfmathresult}
\begin{document}
\pgfkeys{/pgf/declare function={hello=1;bye=2;}}
\pgfmathparse{add(hello,bye)}\pgfmathprintnumber\pgfmathresult

or \pgfmathparse{hello+bye}\pgfmathprintnumber\pgfmathresult

\myaddandprint{hello}{bye}

\myparseandprint{hello+bye}
\end{document}

ここに画像の説明を入力してください

Python 言語にもっと似たものが欲しいなら、おそらくtikzmathそれがあなたが探しているものでしょう。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{math}
\begin{document}
\tikzmath{integer \x, \y, \z;
\x = 1;
\y = 2;
let \z=\x+\y; 
print {$x=\x$, $y=\y$, $z=x+y=\x+\y=\z$};}
\end{document}

ここに画像の説明を入力してください

拡張機能が必要な場合は、 を使用できますxfp

\documentclass{article}
\usepackage{xfp}
\begin{document}
\begingroup\def\x{1}\def\y{2}\fpeval{\x+\y}\endgroup
\end{document}

慎重に作業すれば、pgf と混合できますが、ユニットが剥がれてしまうことを覚えておく必要があります。

答え2

\begin{tikzpicture}[declare function={yeet(\a,\b)=\a+\b;}]
\draw (0,0)--(3,3);
\draw (0,3)--({yeet(2,1)},{yeet(5,3)});
\end{tikzpicture}

これは私がやりたいことにぴったりです。このスクリプトでは、2+1=3、5+3=8なので、(0,0)--(3,3)から線を描き、(0,3)--(3,8)から別の線を描いています。

関連情報