Sublinhado em metauml

Sublinhado em 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}

Como posso +instance(): Asublinhar para marcá-lo como um método estático?

É possível desabilitar a conversão +e -os gráficos?

A solução de Egreg abaixo funciona, mas existe alguma maneira de desenhar o sublinhado "verdadeiro"? Por exemplo, se eu adicionar algo abaixo da parte sublinhada, terei que mover a linha manualmente. Eu quero evitar isso.

Responder1

Você deveria usar mpsettings={input metauml;}; então você pode usar o Metapost para desenhar uma linha.

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

insira a descrição da imagem aqui

Para alterar o +e -para algo diferente do padrão, deve-se estudar detalhadamente a fontemetauml.mp

Responder2

Idéia de desenho de linha sob o rótulo "atributo". (reputação imagem morta)

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

Esta é uma variação da resposta de egreg. É possível que exista uma resposta mais precisa ...

input metauml;

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

    drawObject(SingletonLite);

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

end.

Responder3

As sugestões a seguir funcionam com o código noramo mestre do MetaUML, mas não com MetaUML 0.2.5.

É possível marcar explicitamente os recursos da classe como abstratos ou estáticos:

Diagrama de classes metaUML: defina alguns métodos como abstratos em uma classe abstrata

O texto pode ser sublinhado da seguinte forma:

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

O uso de bloqueios como marcadores de visibilidade foi descontinuado em favor da notação UML padrão.

informação relacionada