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