我有一张 tikz 图片,我在其中使用了一些自定义数字,以便更轻松地更改它们。在争论中\draw
执行了一些简单的计算。但现在我想排版相同计算的结果。
所以我想要一些宏,在其中我可以设置可以在 tikz 坐标计算中使用的数字,并排版计算的值。
这是一个尚无法运行的示例,因为它应该打印(1.5,0)
而不是(0.5+1,1-1)
。
\documentclass{minimal}
\usepackage{tikz}
\def\x{0.5}
\def\y{1}
\def\delta{1}
\begin{document}
\begin{tikzpicture}
\draw (\x,\y) -- (\y+\delta,\y-\delta);
\end{tikzpicture}
Wrong: The line goes from $(\x,\y)$ to $(\x+\delta,\y-\delta)$\\
Desired: The line goes from $(\x,\y)$ to $(1.5,0)$
\end{document}
答案1
您可以pgfmath
在 之外使用tikzpicture
,因为\x
和\y
都是\delta
全局定义的。
\documentclass{minimal}
\usepackage{tikz}
\newcommand{\compute}[1]{\pgfmathparse{#1}\pgfmathresult}
\def\x{0.5}
\def\y{1}
\def\delta{1}
\begin{document}
\begin{tikzpicture}
\draw (\x,\y) -- (\y+\delta,\y-\delta);
\end{tikzpicture}
Wrong: The line goes from $(\x,\y)$ to $(\compute{\x+\delta},\compute{\y-\delta)})$\\
Desired: The line goes from $(\x,\y)$ to $(1.5,0)$
\end{document}
答案2
您可以使用\xdef
。
解决方案https://texnique.fr/osqa/questions/4293/reutilisation-de-coordonnees-tikz-dans-le-corps-du-texte
\documentclass{minimal}
\usepackage{tikz}
\def\x{0.5}
\def\y{1}
\def\delta{1}
\begin{document}
\begin{tikzpicture}
\draw (\x,\y) -- (\x+\delta,\y-\delta);
\pgfmathsetmacro{\xx}{\x+\delta}
\xdef\coordx{\xx}
\pgfmathsetmacro{\yy}{\y-\delta}
\xdef\coordy{\yy}
\end{tikzpicture}
Wrong: The line goes from $(\x,\y)$ to $(\coordx,\coordy)$\\
Desired: The line goes from $(\x,\y)$ to $(1.5,0)$
\end{document}