LaTeX宏包TikZ-UML使用备忘一
TikZ-UML宏包是用于绘制UML图形的,相较于我以前使用的pgf-umlcd宏包而言,他支持的图形种类更多,二者都是由tikz扩展而来。这里把使用方法与绘图例子记录下来,以备忘。
下载与安装
TikZ-UML宏包并没有包含在texlive中,需要自己去官网下载,地址是:TikZ-UML官网下载。我把官网2016年3月29日发布的版本(目前最新版)已经传入51CTO,下载地址是:TikZ-UML51CTO下载。下载的压缩包里面有宏包文件与说明文档。
下载解压后,可以把其中的文件tikz-uml.sty放到自己定义的文件夹内,或者按照你用的LaTeX编辑工具来放置。我是放在自定义的文件夹内,下面的代码中大家会看到,这种方式需要在调用时,也就是\usepackage{}命令中把文件所在的完整路径列出。
文件头
我所举例子的文件头部内容都是一样的,所以单独列在这里。
% 51CTO陆巍的博客 \documentclass[oneside, AutoFakeBold]{article} \usepackage{geometry} % 用于页面设置 % 设置为A4纸,并按照MSOffice的默认尺寸设置四周边距 \geometry{ a4paper, left = 3.17cm, right = 3.17cm, top = 2.54cm, bottom = 2.54cm } % 颜色支持 \usepackage[dvipsnames, svgnames, x11names]{xcolor} % 定义uml图形底色.注意:内置pdf阅读器的色彩显示不准确,要以外部的pdf阅读器为准. % uml图形的边框、线段的颜色使用基础色中的purple。 \definecolor{umlyellow}{RGB}{255, 251, 214} % 汉字支持 \usepackage{xeCJK} % 设置字体。注意顺序,第一个定义的就是默认字体 \setCJKfamilyfont{song}{方正书宋简体} \newcommand{\song}{\CJKfamily{song}} \setCJKfamilyfont{kaiti}{方正楷体简体} \newcommand{\kaiti}{\CJKfamily{kaiti}} \setCJKfamilyfont{heiti}{方正黑体简体} \newcommand{\heiti}{\CJKfamily{heiti}} % 绘图支持 \usepackage{tikz} \usetikzlibrary{arrows, positioning, shapes} % UML绘图支持 % tikz-uml宏包并不在texlive中,需要单独下载 % 下载后可放在自己定义的文件夹内,并在调用时指明完整路径 \usepackage{/mydata/latex_package/tikzuml/tikz-uml} % 设置断字参数,数值越大,出现断字的情况越少 \hyphenpenalty = 1000 % ------------------ 开始 ------------------- \begin{document} ... % 正文 \end{document}
下面的示例代码放在正文部分即可。
示例一
\begin{center} \begin{tikzpicture} \umlsimpleclass[x = -4, y = 2, draw = purple]{Mock CheckWriter}{}{} \umlsimpleclass[x = 0, y = 2, draw = purple]{PayrollTest}{}{} \umlsimpleclass[x = 4, y = 2, draw = purple]{Mock Employee}{}{} \umlinterface[x = -4, y = 0, draw = purple]{CheckWriter}{}{ + writeCheck() } \umlsimpleclass[x = 0, y = 0, draw = purple]{Payroll}{}{} \umlinterface[x = 4, y = 0, draw = purple]{Employee}{}{ + claculatePay()\\ + postPayment() } \umlinterface[x = 0, y = -3, draw = purple]{Employee Database}{}{ + getEmployee()\\ + putEmployee() } \umlsimpleclass[x = 0, y = -6, draw = purple]{Mock Employee Database}{}{} \umluniassoc[draw = purple]{PayrollTest}{Mock CheckWriter} \umluniassoc[draw = purple]{PayrollTest}{Mock Employee} \umluniassoc[draw = purple]{PayrollTest}{Payroll} \draw[draw = purple, -angle 45](PayrollTest.north) -- ++(0, 0.3) -- ++(6, 0) |- (Mock Employee Database); \umluniassoc[draw = purple]{Payroll}{CheckWriter} \umluniassoc[draw = purple]{Payroll}{Employee} \umluniassoc[draw = purple]{Payroll}{Employee Database} \umlinherit[draw = purple]{Mock CheckWriter}{CheckWriter} \umlinherit[draw = purple]{Mock Employee}{Employee} \umlHVdep[draw = purple]{Employee Database}{Employee} \umlinherit[draw = purple]{Mock Employee Database}{Employee Database} \end{tikzpicture} \heiti\\[0.4cm] 图4.2 使用Mock Objects测试方法,解除了耦合的薪水支付应用模型\song \end{center}
效果如下:
说明:
1) 配色方案:底色默认就是淡黄,边框色与线段颜色是用命令:draw=purple来设置的(默认是黑色),之所以选用这样的配色是受Rational Rose的影响。
2) 目前没有找到类名称自动换行的设置方法,只能是全部放在一行中了。(设置text width与双斜杠均无效。)
3) TikZ-UML是由tikz扩展而来,所以tikz中的很多功能在这里也可以用,例如上述例子中从PayrollTest到Mock Employee Database的线段绘制方式。
示例二
\begin{center} \begin{tikzpicture} \umlsimpleclass[x = 0, y = 0, draw = purple, template = { }]{Set} \umlsimpleclass[x = 2, y = -3, draw = purple, template = { }]{Unbounded Set} \umlsimpleclass[x = 8, y = -3, draw = purple, template = { }]{Third Party Unbounded Set} \umlsimpleclass[width = 3cm, x = -2, y = -6, draw = purple, template = { }]{Bounded Set} \umlsimpleclass[x = 8, y = -6, draw = purple, template = { }]{Third Party Bounded Set} \umlVHVinherit[arm1 = 4.3cm, draw = purple]{Bounded Set}{Set} \umlVHVinherit[arm1 = 1.3cm, draw = purple]{Unbounded Set}{Set} \umluniassoc[draw = purple]{Unbounded Set}{Third Party Unbounded Set} \umluniassoc[draw = purple]{Bounded Set}{Third Party Bounded Set} \end{tikzpicture} \\[0.4cm]\heiti 图10.2 容器类适配器层\song \end{center}
效果如下:
说明:
1) template={}的大括号中填充的是全角符号的空格。
2) 注意从Bounded Set(或从Unbounded Set)到Set的线段绘制方法,其中的VHV表示“竖横竖”的绘制顺序,有更多转折的线段就不能用这种方式表现了,可以使用draw来绘制(参考示例一)。
- torch-ios框架XCODE使用备忘
- 常用网络命令(备忘使用)
- awk sed等神奇使用备忘
- 使用StarUML 画UML 类图 by Java
- JSCONCPP使用备忘
- Java 备忘: 使用 SpringMVC+Jackson 自动处理 JSON
- [备忘][转]rsync使用时的常见问题
- mac使用Sublime + PlantUML高效地画图
- UML,OOAD,RUP在实际使用中存在的问题
- 备忘-tomcat-maven-plugin的使用
- 使用Eclipse的UML插件生成类图
- 备忘:npm/apm 使用国内源
- python使用MongoDB,备忘
- Atitit.uml2 api 的编程代码实现设计uml开发 使用eclipse jar java 版本
- Haxe UI框架StablexUI的使用备忘与心得(一)
- github 使用备忘
- Haxe UI框架StablexUI的使用备忘与心得(序)
- Unity3D 使用备忘(三) 实现相机自动漫游开始、暂停、停止及相机角度切换。
- 备忘-tomcat-maven-plugin的使用