pos
エッジ ノードの をランダムに設定しようとしています。次の方法が機能します。
\documentclass{article}
\usepackage{tikz}
\tikzset{
X/.code={
\pgfmathparse{rnd}
\xdef\X{\pgfmathresult}
\pgfkeysalso{pos=\X, label=\X}
}
}
\begin{document}
\tikz \draw (0,0) edge node[X] {} (10,0) edge node[X] {} (10,10) edge node[X] {} (0,10);
\end{document}
\edef
しかし、の代わりに を使用すると機能しません\xdef
。なぜでしょうか? で定義されている閉じたグループはどこにありますか\X
? また、グローバル定義を行う必要がない、より多くの要素のソリューションはありますか?
答え1
私はその鍵に気づいていませんでした.evaluted
。私にとっては
\documentclass{article}
\usepackage{tikz}
\tikzset{X/.style={pos/.evaluated={rnd}}}
\begin{document}
\tikz \draw (0,0) edge node[X] {} (10,0) edge node[X] {} (10,10) edge node[X] {} (0,10);
\end{document}
うまくいきました。もちろん、同じランダムな値を 2 回使用しても (私の質問のように)、これは機能しません。しかし、私はとにかくそれを必要としませんでした。そのためには、キー.expanded
(例: pos/.expanded
) が役立つかもしれませんが、私はそれを試していません。