我正在尝试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}
完成了这项工作。当然,如果我想使用相同的随机值两次(如我的问题所示),这不起作用。但我反正也不需要。为此,键.expanded
(例如pos/.expanded
)可能会有所帮助,但我还没有尝试过。