metauml のインストールと使用エラー

metauml のインストールと使用エラー

この質問は少し範囲が広いですが、私は metauml をインストールしようとしています (Mac と texlive を使用しています)。パッケージをダウンロードし、インストール スクリプトを実行しました。これにより、metapost ディレクトリの下に metauml ディレクトリが作成されました (これは予想どおりです)。しかし、実行できません。次のコードがあります:

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

metadiagram.mp は同じフォルダーにあり、次のように定義されています。

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

エラーが発生しています: metadiagram.mp 内のグラフィックのサイズを判別できません (BoundingBox がありません)

誰か助けてくれませんか?

答え1

.mp事前に Metapost で処理する必要があるファイルを含めることはできません。

Metapostの実行方法は、オペレーティングシステムとTeXディストリビューションによって異なります。おそらくTeXShopとTeXworksにはこのためのメニュー項目があります。一般的には、ターミナルウィンドウを開いて、cdファイルを含むディレクトリに移動し、次のようにします。

mpost metadiagram.mp

metadiagram.1これにより、ファイルが生成されますbeginfig(1)

\includegraphics{metadiagram.1}

します。

読み込みに使用しているものがgraphicx間違っていることに注意してください。

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

パッケージを使う別の方法もありますgmp。あなたの場合、入力は次のようになります。

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

このドキュメント (Metapost ソースが埋め込まれていることに注意) を-shell-escapeスイッチ (TeXShop の設定で有効にできます) 付きで処理すると、Metapost の実行が自動的に実行されます。

ここに画像の説明を入力してください

関連情報