TikZ-UML 超出 TeX 容量

TikZ-UML 超出 TeX 容量

我在使用 TikZ-UML 時遇到問題,這是一個不錯的庫,但有一些錯誤(或在我的配置中不起作用)。如果我在 UML 狀態機圖中使用所有「執行」、「退出」和「進入」行為,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.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}

在此輸入影像描述

相關內容