\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 符号。