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 표기법을 위해 가시성 표시로 잠금 사용이 중단되었습니다.

관련 정보