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

これは確かにバグです。どのバージョンを持っているかはわかりませんが、を開いて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}

ここに画像の説明を入力してください

関連情報