훌륭한 라이브러리인 TikZ-UML을 사용하는 데 문제가 있지만 일부 버그가 있습니다(또는 내 구성에서 작동하지 않습니다). UML 상태 머신 다이어그램에서 "do", "exit" 및 "entry" 동작을 모두 사용하면 LaTeX가 무한 루프에 빠집니다.
이 예는 다음에서 단순화되었습니다.선적 서류 비치.
\documentclass{article}
\usepackage{tikz-uml}
\begin{document}
\begin{tikzpicture}
\begin{umlstate}[name=state, do=b, exit=c, entry=d]{state}
\end{umlstate}
\end{tikzpicture}
\end{document}
"do", "exit" 또는 "entry" 중 하나를 삭제하면 괜찮습니다. 그들 모두에서 오류가 발생했습니다.
! TeX capacity exceeded, sorry [input stack size=5000].
힌트가 있나요?
답변1
이것은 실제로 버그입니다. 어떤 버전이 있는지는 모르겠지만 2857행을 열고 tikz-uml.sty
2857행으로 이동하면 내용이 확장되지 않았기 때문에 재귀를 발견하게 됩니다(해당 옵션에서 나오는 텍스트를 수집해야 한다고 생각합니다).
\def\tikzumlStateText{\tikzumlStateTextOld \\ do/\umlstatedo}%
이를 다음으로 변경하십시오(CTAN에 없기 때문에 아마도 로컬 texmf에 있을 것입니다).
\expandafter\def\expandafter\tikzumlStateText\expandafter{\tikzumlStateTextOld\\ do/\umlstatedo}%
그러면 순서에 관계없이 작동됩니다.
\documentclass{article}
\usepackage{tikz-uml}
\begin{document}
\begin{tikzpicture}
\begin{umlstate}[name=state,
entry=d,
exit=b,
do=c,
]{state}
\end{umlstate}
\end{tikzpicture}
\end{document}