![MetaUML:通过 LaTeX 的 emp 包没有输出](https://linux22.com/image/236838/MetaUML%EF%BC%9A%E9%80%9A%E8%BF%87%20LaTeX%20%E7%9A%84%20emp%20%E5%8C%85%E6%B2%A1%E6%9C%89%E8%BE%93%E5%87%BA.png)
以下示例仅打印图形的标题:
\documentclass[a4paper,11pt]{article}
\usepackage{emp}
\ifx\pdftexversion\undefined
\usepackage[dvips]{graphicx}
\else
\usepackage[pdftex]{graphicx}
\DeclareGraphicsRule{*}{mps}{*}{}
\fi
\begin{document}
\begin{empfile}
\begin{empcmds}
input metauml;
\end{empcmds}
\begin{figure}
\centering
\begin{emp}[classdiag](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{A class diagram}
\end{figure}
\end{empfile}
\end{document}
环境:Ubuntu 11.04(amd64)、TexLive 2009、MetaUML 0.2.5、TeXMaker 2.2.1。
编辑:
以下是\ifx ... \fi
根据ifpdf
包替换建议的完整示例:
\documentclass[a4paper,11pt]{article}
\usepackage{emp}
\usepackage{ifpdf,graphicx}
\ifpdf
\DeclareGraphicsRule{*}{mps}{*}{}
\fi
\begin{document}
\begin{empfile}
\begin{empcmds}
input metauml;
\end{empcmds}
\begin{figure}
\centering
\begin{emp}[classdiag](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{A class diagram}
\end{figure}
\end{empfile}
\end{document}
处理仍然没有给出图形输出。仅打印了图形的标题。
答案1
\ifx
您不应该像在代码中那样测试 pdflatex 编译\fi
,而是使用
\usepackage{ifpdf,graphicx}
\ifpdf
\DeclareGraphicsRule{*}{mps}{*}{}
\fi
您还可以使用 gmp 包
\documentclass[a4paper,11pt]{article}
\usepackage[shellescape,latex]{gmp}
\begin{document}
\begin{figure}
\centering
\begin{mpost}[mpsettings=input metauml;]
Class.A("A")()();
Class.B("B")()();
B.e = A.w + (-20, 0);
drawObjects(A, B);
link(inheritance)(B.e -- A.w);
\end{mpost}
\caption{A class diagram}
\end{figure}
\end{document}
并用 进行编译pdflatex -shell-escape
。(免责声明:我是该软件包的作者。)