将节点随机放置在边缘上

将节点随机放置在边缘上

我正在尝试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)可能会有所帮助,但我还没有尝试过。

相关内容