MetaUML 中的换行符

MetaUML 中的换行符

我正在尝试使用 MetaUML 为我的 LaTeX 文档绘制 UML 图。不幸的是,我对布局有点不满意,因为具有长签名(即许多参数)的函数会变成相当长的线,因此会过度加宽它们所在类的绘制框,所以我想让 MetaUML 拆分这些长线。

有没有办法将换行符放入 MetaUMLclass对象的属性中?

手册对此只字未提。我需要合并方法签名,但如果没有换行符,我的类就会变得太宽,无法阅读图表。下面是一个简短的例子 (笔记:LaTeX 构建器必须使用以下-shell-escape选项运行):

\documentclass{article}
\usepackage[shellescape]{gmp}
\begin{document}
\begin{mpost}[mpsettings={input metauml;},use]

Class.Config("Config")
("-key1:char*","-value1:char*","-key2:char*","-value2:char*","-key3:char*","-value3:char*","-key4:char*","-value4:char*","-key5:char*","-value5:char*")
("+setValues(key1:char*,value1:char*, key2:char*,value2:char*, key3:char*,value3:char*,key4:char*,value4:char*,key5:char*,value5:char*)");
drawObjects(Config);

\end{mpost}
\end{document}

这样做的话,函数的行setvalues()会变得很长,因此,类在图中绘制的会变得过宽。我想在 key3 和 value3 之间放置一个\newline或之类的东西\\,以便函数分布在两条线上,绘图会变得更紧凑一些。虽然从语义上讲,这当然不是一个合理的示例,但我认为它表达了我的观点:我基本上想在 UML 图的类中分割过长的行。

答案1

可以将属性和方法放在多行上,例如:

Class.A("Point")
  ("#x:int", 
   "#y:int")
  ("+set(x:int, y:int)",
   "+getX():int",
   "+getY():int",
   "-debug():void",
   "test():void");
drawObject(A);

可以使用 Metapost 字符串连接运算符“&”从其各个部分构建一个长方法字符串,如“f(" & ")”。

https://github.com/ogheorghies/MetaUML/blob/master/manual/fig/class.mp#L21

相关内容