![文档中包含多个 TIKZ-UML 用例时无法正确显示](https://linux22.com/image/248597/%E6%96%87%E6%A1%A3%E4%B8%AD%E5%8C%85%E5%90%AB%E5%A4%9A%E4%B8%AA%20TIKZ-UML%20%E7%94%A8%E4%BE%8B%E6%97%B6%E6%97%A0%E6%B3%95%E6%AD%A3%E7%A1%AE%E6%98%BE%E7%A4%BA.png)
我正在使用 TIKZ-UML 创建四个简单的用例图。我将它们分别放在单独的文件中,以确保它们都能按要求进行编译。
我在序言中包含了所需的软件包,并在文档中包含了对包含 tikzpictures 的文件的引用。当我编译第一个图表时,它可以很好地编译(和显示),但以下三个图表似乎受到第一个图表的 \usecase 中规定的宽度的影响。
该图表是文档中包含的第一个图表:
\begin{figure}
\centering
\begin{tikzpicture}
\umlactor[y=4]{Supervisor}
\umlactor[y=2]{Co-Supervisor}
\umlactor[y=0]{Examinator}
\umlusecase[x=5, y=2, fill=lightgray!50, width=3cm]{Determining examiner availability}
\umlactor[x=10, y=2]{Secretary}
\umlassoc{Supervisor}{usecase-1}
\umlassoc{Co-Supervisor}{usecase-1}
\umlassoc{Examinator}{usecase-1}
\umlassoc{usecase-1}{Secretary}
\end{tikzpicture}
\caption{Scenario: Determining examiner availbility.}
\end{figure}
其它图表大致相同,只是 \usecase 的文本不同(并且宽度可能不同)。
该图的序言包含:
\usepackage{tikz}
\usepackage{tikz-uml}
\usetikzlibrary{positioning,chains,fit,shapes,calc}
示例链接: 第一张图没问题,下一张图宽度不对
答案1
问题是您usecase-1
在关联中总是引用 。但是,名称和计数器是全局的,因此在第二个 中tikzpicture
,您应该引用usecase-2
。
节点和锚点是全局定义的,因此即使您没有usecase-1
在第二张图片中定义,您仍然可以像定义它一样引用它,并且线条最终会位于与第一张图片相同的位置。
或者,您可以将计数器重置tikzumlUseCaseNum
为0
每个新值的开始位置tikzpicture
,这样编号将重新开始:
\documentclass{article}
\usepackage{tikz}
\usepackage{tikz-uml}
\usetikzlibrary{positioning,chains,fit,shapes,calc}
\begin{document}
\begin{tikzpicture}
\umlactor[y=4]{Supervisor}
\umlactor[y=2]{Co-Supervisor}
\umlactor[y=0]{Examinator}
\umlusecase[x=5, y=2, fill=lightgray!50, width=3cm]{Determining examiner availability}
\umlactor[x=10, y=2]{Secretary}
\umlassoc{Supervisor}{usecase-1}
\umlassoc{Co-Supervisor}{usecase-1}
\umlassoc{Examinator}{usecase-1}
\umlassoc{usecase-1}{Secretary}
\end{tikzpicture}
\begin{tikzpicture}
\setcounter{tikzumlUseCaseNum}{0}% Reset the counter
\umlactor[y=4]{Supervisor}
\umlactor[y=2]{Co-Supervisor}
\umlactor[y=0]{Examinator}
\umlusecase[x=5, y=2, fill=lightgray!50, width=2cm]{Sudden}
\umlactor[x=10, y=2]{Secretary}
\umlassoc{Supervisor}{usecase-1}
\umlassoc{Co-Supervisor}{usecase-1}
\umlassoc{Examinator}{usecase-1}
\umlassoc{usecase-1}{Secretary}
\end{tikzpicture}
\end{document}