LaTeX巨集包TikZ-UML使用備忘
阿新 • • 發佈:2018-12-12
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} % 漢字支援 \usepackage{xeCJK} % 設定字型。注意順序,第一個定義的就是預設字型 \setCJKfamilyfont{song}{方正書宋簡體} \newcommand{\song}{\CJKfamily{song}} \setCJKfamilyfont{kaiti}{方正楷體簡體} \newcommand{\kaiti}{\CJKfamily{kaiti}} \setCJKfamilyfont{heiti}{方正黑體簡體} \newcommand{\heiti}{\CJKfamily{heiti}} % 繪圖支援 \usepackage{tikz} \usetikzlibrary{arrows} % 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的線段繪製方式。