metauml で下線を引く

metauml で下線を引く
\documentclass{article}
\usepackage[shellescape]{gmp}
\begin{document}
\begin{figure}
\begin{mpost}[use]
input metauml;

Class.A("A")
       ("-instance: A")
       ("-A()",
        "+instance(): A");

drawObjects(A);
\end{mpost}
\caption{Class \texttt{A} as a singleton}
\label{fig:uml-a}
\end{figure}
\end{document}

+instance(): A下線を付けて静的メソッドとしてマークするには どうすればよいですか?

+変換と-グラフィックを無効にすることは可能ですか?

以下の Egreg のソリューションは機能しますが、「本当の」下線を引く方法はありますか? たとえば、下線部分の下に何かを追加する場合、手動で線を移動する必要があります。これを避けたいです。

答え1

;を使用するmpsettings={input metauml;}と、Metapost を使用して線を描画できます。

\documentclass{article}
\usepackage[shellescape]{gmp}
\begin{document}
\begin{figure}
\begin{mpost}[use,mpsettings={input metauml;}]

Class.A("A")
       ("-instance: A")
       ("-A()",
        "+instance(): A");

drawObjects(A);

draw A.sw+(13,1.5) -- A.se+(-4,1.5);

\end{mpost}
\caption{Class \texttt{A} as a singleton}
\label{fig:uml-a}
\end{figure}
\end{document}

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

+-デフォルト以外のものに変更するには、ソースを詳細に調べる必要があります。metauml.mp

答え2

「属性」ラベルの下に線を引くアイデア。(評判が殺されたイメージ)

+---------------------+
|      Singleton      |
+---------------------+
| -  static Instance  |
|   ----------------- |
+---------------------+
|                     |
+---------------------+

これは egreg の回答のバリエーションです。より正確な回答が存在する可能性があります...

input metauml;

beginfig(1);
    Class.SingletonLite("Singleton")("- static Instance")();

    drawObject(SingletonLite);

    draw SingletonLite.attributeStack.pict[0].sw -- SingletonLite.attributeStack.pict[0].se ;
endfig;

end.

答え3

以下の提案は、MetaUMLのマスターブランチただし、MetaUML 0.2.5 ではそうではありません。

クラスの機能を抽象的または静的として明示的にマークすることができます。

metaUMLクラス図: 抽象クラス内のいくつかのメソッドを抽象として設定する

テキストに下線を引く方法は次の通りです。

Picture.a("foo");
a.info.textDecoration := "underline";

可視性マーカーとしてのロックの使用は、標準の UML 表記法に置き換えられて廃止されました。

関連情報