
나는 각 가장자리가 선 너비와 가장자리의 레이블을 통해 시각화되는 특정 가중치를 갖는 트리를 그리고 싶습니다. TikZ를 사용하면 매우 쉽습니다.
\documentclass{standalone}
\usepackage{tikz-qtree}
\begin{document}
\begin{tikzpicture}[
clabel/.style = { fill=white, circle, inner sep=1pt,font=\scriptsize},
]
\Tree [.O
\edge [line width = 2] node [clabel] {2}; L
\edge [line width = 4] node [clabel] {4}; R
]
\end{tikzpicture}
\end{document}
내가 그리고 싶은 트리는 꽤 크므로 에지 코드를 제외하고 싶습니다. 즉, 다음과 같은 매크로를 갖고 싶습니다.
\def\edgeweight#1{\edge [line width = #1] node [clabel] {#1}; }
불행하게도 LaTeX는 \edge
이 매크로를 호출할 때 명령에 대해 불평하는데, 이는 \Tree
명령 외부에 나타나기 때문이라고 가정합니다. 이 문제를 해결할 수 있는 방법이 있나요?
답변1
프리앰블에 다음 코드를 추가하면 문제가 해결됩니다.
\makeatletter
\let\old@@children\@@children
\def\@@children{\futurelet\my@next\my@@children}
\def\my@@children{%
\ifx\my@next\edgeweight\else
\expandafter\@gobble
\fi
\expandafter\old@@children}
\makeatother
이 솔루션은 David Carlisle에 의한 것이며 다음에서 가져왔습니다.여기. 관련 질문 탐지기를 작성한 사람에게 축하를 전합니다. 이 글을 통해 바로 올바른 위치로 이동했습니다!