TikZ-UML로 인해 TeX 용량이 초과되었습니다.

TikZ-UML로 인해 TeX 용량이 초과되었습니다.

훌륭한 라이브러리인 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.sty2857행으로 이동하면 내용이 확장되지 않았기 때문에 재귀를 발견하게 됩니다(해당 옵션에서 나오는 텍스트를 수집해야 한다고 생각합니다).

\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}

여기에 이미지 설명을 입력하세요

관련 정보