
\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。
可以將類別特徵明確標記為抽像或靜態:
文字可以加底線,如下所示:
Picture.a("foo");
a.info.textDecoration := "underline";
已不再使用鎖作為可見性標記,取而代之的是標準 UML 表示法。