Capacidade TeX excedida com TikZ-UML

Capacidade TeX excedida com TikZ-UML

Estou com um problema ao usar o TikZ-UML, que é uma biblioteca legal, mas tem algum bug (ou não funciona na minha configuração). O LaTeX entra em um loop infinito se eu usar todos os comportamentos "do", "exit" e "entry" em um diagrama de máquina de estado UML.

Este exemplo é simplificado a partir dodocumentação.

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

Se eu excluir o "fazer", a "saída" ou a "entrada", tudo bem. Com todos eles, recebi um erro:

! TeX capacity exceeded, sorry [input stack size=5000].

Você tem alguma dica?

Responder1

Este é realmente um bug. Não sei qual versão eu tenho mas se você abrir tikz-uml.stye for para a linha 2857, você encontra uma recursão já que o conteúdo não está expandido (acho que era para coletar o texto vindo dessas opções);

\def\tikzumlStateText{\tikzumlStateTextOld \\ do/\umlstatedo}%

Mude para (já que não está no CTAN, você provavelmente o tem no seu texmf local),

\expandafter\def\expandafter\tikzumlStateText\expandafter{\tikzumlStateTextOld\\ do/\umlstatedo}%

Então funciona, independente da ordem

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

insira a descrição da imagem aqui

informação relacionada