MetaUML – Issue with No Output Using EMP Package in LaTeX

empmetauml

The following example prints only the figure's caption:

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

Environment: Ubuntu 11.04 (amd64), TexLive 2009, MetaUML 0.2.5, TeXMaker 2.2.1.

EDIT:

Here's full example with replacement of \ifx ... \fi with suggestion based on ifpdf package:

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

Processing still gives no graphical output. Only figure's caption is printed.

Best Answer

You shouldn't be testing pdflatex compilation as you do in the code from \ifx up to \fi, but rather with

\usepackage{ifpdf,graphicx}
\ifpdf
  \DeclareGraphicsRule{*}{mps}{*}{}
\fi

You can also use the gmp package

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

and compile with pdflatex -shell-escape. (Disclaimer: I'm the author of the package.)

Related Question