
Diese Frage ist etwas allgemein gehalten, aber ich versuche, Metauml zu installieren (ich verwende Mac und Texlive). Ich habe das Paket heruntergeladen und das Installationsskript ausgeführt, das ein Metauml-Verzeichnis unter dem Metapost-Verzeichnis ablegt (was ich erwartet hatte). Ich kann es jedoch nicht zum Laufen bringen. Ich habe diesen Code:
\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}
Die Datei metadiagram.mp befindet sich im selben Ordner und ist wie folgt definiert:
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
Ich erhalte die Fehlermeldung: Die Größe der Grafik in metadiagram.mp kann nicht bestimmt werden (kein BoundingBox)
Kann jemand helfen ?
Antwort1
Sie können keine .mp
Datei einbinden, die zuvor von Metapost verarbeitet werden soll.
Wie Metapost ausgeführt wird, hängt von Ihrem Betriebssystem und Ihrer TeX-Distribution ab. Möglicherweise haben TeXShop und TeXworks Menüpunkte dafür. Im Allgemeinen können Sie ein Terminalfenster öffnen, cd
in das Verzeichnis wechseln, das die Datei enthält, und
mpost metadiagram.mp
Dies erzeugt eine Datei metadiagram.1
, weil Sie sagen beginfig(1)
und
\includegraphics{metadiagram.1}
wird tun.
Beachten Sie, dass das, was Sie zum Laden verwenden, graphicx
falsch ist. Es sollte sein
\usepackage{ifpdf}
\usepackage{graphicx}
\ifpdf
\DeclareGraphicsRule{*}{mps}{*}{}
\fi
Es gibt noch eine andere Möglichkeit, mit dem Paket fortzufahren gmp
. Für Ihren Fall sollte die Eingabe sein
\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}
Wenn Sie dieses Dokument (beachten Sie, dass die Metapost-Quelle darin eingebettet ist) mit dem -shell-escape
Schalter verarbeiten (eine Einstellung in TeXShop ermöglicht Ihnen, ihn zu aktivieren), wird der Metapost-Lauf automatisch durchgeführt.