error de instalación y uso de metauml

error de instalación y uso de metauml

Esta pregunta es un poco amplia pero estoy intentando instalar metauml (estoy usando Mac y texlive). Descargué el paquete y ejecuté el script de instalación que colocaba un directorio metauml en el directorio metapost (que esperaba). Sin embargo, no puedo hacer que se ejecute. Tengo este código:

\documentclass[a4paper,12pt]{article}
\usepackage{amssymb} % needed for math
\usepackage{amsmath} % needed for math
\usepackage[utf8]{inputenc} % this is needed for german umlauts
\usepackage[ngerman]{babel} % this is needed for german umlauts
\usepackage[T1]{fontenc}    % this is needed for correct output of umlauts in pdf
\usepackage[margin=1.5cm]{geometry} %layout

% this is needed for forms and links within the text
\usepackage{hyperref}  

% The following is needed in order to make the code compatible
% with both latex/dvips and pdflatex.
\ifx\pdftexversion\undefined
\usepackage[dvips]{graphicx}
\else
\usepackage[pdftex]{graphicx}
\DeclareGraphicsRule{*}{mps}{*}{}
\fi

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% THE DOCUMENT BEGINS                                                %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\section{Class diagram}
\includegraphics{metadiagram.mp}
\end{document}

El metadiagram.mp está en la misma carpeta y se define de la siguiente manera:

input metauml;
beginfig(1);
Class.World("World")
       ("-age: int",
        "#ressources: List") 
       ("+sayHello(): void");

Class.NoHuman("Human")
       ("-birthday: Date",
        "-nickname: String",
        "-secret: String") 
       ("+code(language: Language): Program");

leftToRight(50)(World, NoHuman);
drawObjects(World, NoHuman);

link(aggregation)(NoHuman.w -- World.e);
item(iAssoc)("1")(obj.n     = .2[World.e,NoHuman.w]);
item(iAssoc)("has >")(obj.n = .5[World.e,NoHuman.w]);
item(iAssoc)("0..*")(obj.n  = .8[World.e,NoHuman.w]);

endfig;
end

Recibo el error: No se puede determinar el tamaño del gráfico en metadiagram.mp (sin BoundingBox)

Alguien puede ayudar ?

Respuesta1

No puedes incluir un .mparchivo, que Metapost debería procesar de antemano.

La forma de ejecutar Metapost depende de su sistema operativo y de la distribución de TeX; posiblemente TeXShop y TeXworks tengan elementos de menú para esto. En general, puede abrir una ventana de Terminal, cdal directorio que contiene el archivo y hacer

mpost metadiagram.mp

Esto producirá un archivo metadiagram.1, porque estás diciendo beginfig(1)y

\includegraphics{metadiagram.1}

servirá.

Tenga en cuenta que lo que está utilizando para cargar graphicxes incorrecto. Debería ser

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

Hay otra manera de proceder, con el gmppaquete. Para su caso, la entrada debe ser

\documentclass[a4paper,12pt]{article}
\usepackage{amssymb} % needed for math
\usepackage{amsmath} % needed for math
\usepackage[utf8]{inputenc} % this is needed for german umlauts
\usepackage[ngerman]{babel} % this is needed for german umlauts
\usepackage[T1]{fontenc}    % this is needed for correct output of umlauts in pdf
\usepackage[margin=1.5cm]{geometry} %layout

\usepackage[shellescape]{gmp}

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

% this is needed for forms and links within the text
\usepackage{hyperref}  

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% THE DOCUMENT BEGINS                                                %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\section{Class diagram}

\begin{mpost}[mpsettings={input metauml;},use]
Class.World("World")
       ("-age: int",
        "#ressources: List") 
       ("+sayHello(): void");

Class.NoHuman("Human")
       ("-birthday: Date",
        "-nickname: String",
        "-secret: String") 
       ("+code(language: Language): Program");

leftToRight(50)(World, NoHuman);
drawObjects(World, NoHuman);

link(aggregation)(NoHuman.w -- World.e);
item(iAssoc)("1")(obj.n     = .2[World.e,NoHuman.w]);
item(iAssoc)("has >")(obj.n = .5[World.e,NoHuman.w]);
item(iAssoc)("0..*")(obj.n  = .8[World.e,NoHuman.w]);
\end{mpost}

\end{document}

Si procesa este documento (observe que la fuente Metapost está incrustada en él) con el -shell-escapeinterruptor (una preferencia en TeXShop le permite habilitarlo), entonces la ejecución de Metapost se realizará automáticamente.

ingrese la descripción de la imagen aquí

información relacionada