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

在此处输入图片描述

相关内容