我在使用 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}