가장자리에 무작위로 노드 배치

가장자리에 무작위로 노드 배치

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)가 도움이 될 수 있지만 저는 시도해 보지 않았습니다.

관련 정보