Subrayado en metauml

Subrayado en 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}

¿Cómo puedo +instance(): Asubrayarlo para marcarlo como método estático?

¿Es posible desactivar la conversión +y -los gráficos?

La solución de Egreg a continuación funciona, pero ¿hay alguna forma de dibujar un subrayado "verdadero"? Por ejemplo, si agrego algo debajo de la parte subrayada, tendría que mover la línea manualmente. Quiero evitar esto.

Respuesta1

Deberías usar mpsettings={input metauml;}; entonces puedes usar Metapost para dibujar una línea.

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

ingrese la descripción de la imagen aquí

Para cambiar +y -a algo distinto al predeterminado, se debe estudiar en detalle la fuentemetauml.mp

Respuesta2

Idea al dibujar una línea debajo de la etiqueta "atributo". (imagen de reputación asesinada)

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

Esta es una variación de la respuesta de egreg. Es posible que exista una respuesta más 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.

Respuesta3

Las siguientes sugerencias funcionan con el código en elrama maestra de MetaUML, pero no con MetaUML 0.2.5.

Es posible marcar explícitamente características de clase como abstractas o estáticas:

Diagrama de clases metaUML: establece algunos métodos como abstractos en una clase abstracta

El texto se puede subrayar de la siguiente manera:

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

El uso de candados como marcadores de visibilidad se ha interrumpido en favor de la notación UML estándar.

información relacionada