將節點隨機放置在邊緣上

將節點隨機放置在邊緣上

我試圖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)可能會有所幫助,但我還沒有嘗試過。

相關內容