我尝试使用 MetaUML 为我的 LaTeX 文件创建 UML 图表,但出于某种原因,我没有得到输出。不过,TEXnicCenter 2.02 (64 位) 编译时没有错误。
我已经尝试过之前的建议来自这里,但它仍然没有产生任何东西。
我使用了以下代码:
\usepackage{emp}
\usepackage{ifpdf,graphicx}
\ifpdf
\DeclareGraphicsRule{*}{mps}{*}{}
\fi
\begin{document}
\begin{empfile}
\begin{empcmds}
input metauml;
\end{empcmds}
在我的章节文件中,我使用了以下内容:
\begin{figure}
\centering
\begin{emp}[classdiag2](20, 20)
Class.A("A")()();
Class.B("B")()();
B.e = A.w + (-20, 0);
drawObjects(A, B);
link(inheritance)(B.e -- A.w);
\end{emp}
\caption[Algorithm concep2t]{The concept of the algorithm}
\label{fig:algorithmConcept2}
\end{figure}
问题是否可能是由于图形的实际代码位于单独的 .tex 文件中?
谢谢你!
答案1
您必须mpost
在生成的文件上运行,emp
包不会自动执行此操作。
这有效:
\documentclass{article}
\usepackage{emp}
\usepackage{ifpdf,graphicx}
\ifpdf
\DeclareGraphicsRule{*}{mps}{*}{}
\fi
\begin{document}
\begin{figure}
\centering
\begin{empfile}
\begin{empcmds}
input metauml;
\end{empcmds}
\begin{emp}[classdiag2](20, 20)
Class.A("A")()();
Class.B("B")()();
B.e = A.w + (-20, 0);
drawObjects(A, B);
link(inheritance)(B.e -- A.w);
\end{emp}
\end{empfile}
\caption[Algorithm concep2t]{The concept of the algorithm}
\label{fig:algorithmConcept2}
\end{figure}
\end{document}
如果我将此文档另存为boboaut.tex
并编译它,我会boboaut.mp
在同一目录中找到一个文件(如果环境代码figure
位于您使用\input
或 加载的单独文件中,则无关紧要\include
)。然后您必须打开命令窗口并mpost boboaut.mp
在其中运行。您不需要每次都这样做,但只需在添加或修改 MetaUML 图时这样做即可。请注意,如果有多个,您应该将输出.mp
文件命名为
\begin{empfile}[<meaningful name>]
例如,其中<meaningful name>
可能与 的参数相同\label
。您必须手动运行每个生成的.mp
文件。
\begin{empfile}
不建议在开头和\end{empfile}
结尾都使用,因为这意味着将整个文档编译成一个组,这是坏的。
请注意,有用于 UML 图表的 TikZ 库,请在网站中查找。它们比 MetaUML 功能强大得多emp
。