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