我想使用以下给出的视觉符号制作一些图表(最好使用 TikZ/PGF)企业集成模式由 Hohpe & Woolf 编写。我知道上述网站上的模板是基于 Visio 的,但我更愿意直接在 LaTeX 文档中编写它们。有谁知道我可以使用 PGF 库包吗?或者如果没有,我该如何创建可重复使用的TikZ/PGF 图形中使用的符号?
答案1
从中获取“订单”符号这一页,你可以按照以下方式使用 TikZ 绘制它:
- 定义符号的原点。我选择了矩形的左上角
- 使用 TikZ 绘制元素
- 创建一个
\newcommand
,最好给它起一个有说服力的名字,至少有两个参数,分别表示 X 和 Y 坐标 - 现在输入所有坐标中的 #1 和 #2(X 和 Y)
效果是您的组件是相对于指定的坐标绘制的。下面是 order 元素的一个示例:
\documentclass[parskip]{scrartcl}
\usepackage[margin=15mm]{geometry}
\usepackage{tikz}
\usetikzlibrary{arrows,positioning,patterns}
\newcommand{\EAIOrder}[2]{% X coordinate, Y coordiante
\filldraw[fill=yellow] (#1,#2) rectangle (#1+0.4,#2-0.4);
\filldraw[pattern=north east lines,pattern color=green!50!black] (#1,#2) rectangle (#1+0.4,#2-0.4);%
\draw (#1,#2-0.2) -- (#1-0.2,#2-0.2) -- (#1-0.2,#2+0.2);%
\filldraw[gray,draw=black] (#1-0.2,#2+0.4) circle (0.2);
}
\begin{document}
\begin{tikzpicture}[show background rectangle]
\EAIOrder{0}{0}
\EAIOrder{0}{1}
\EAIOrder{1}{0}
\EAIOrder{1}{1}
\EAIOrder{3}{0}
\EAIOrder{1}{2}
\end{tikzpicture}
\end{document}
以同样的方式,您可以定义其他组件并将它们一起使用。您也可以赋予它更多参数(线条颜色、填充、图案颜色、缩放比例等),但请注意,如果不做特殊努力(例如使用包keyval
),最多只能有 9 个参数。
顺便说一句,上面的代码产生:
编辑1:当然,使用范围是一种更简单的方法。范围传递了 和 的选项xshift
,yshift
这样就避免了必须将#1
和#2
插入到所有坐标中。以下代码与之前的代码完全相同:
\documentclass[parskip]{scrartcl}
\usepackage[margin=15mm]{geometry}
\usepackage{tikz}
\usetikzlibrary{arrows,positioning,patterns,backgrounds}
\newcommand{\EAIOrder}[2]{% X coordinate, Y coordiante
\begin{scope}[xshift=#1, yshift=#2]
\filldraw[fill=yellow] (0,0) rectangle (0.4,-0.4);
\filldraw[pattern=north east lines,pattern color=green!50!black] (0,0) rectangle (0.4,-0.4);%
\draw (0,-0.2) -- (-0.2,-0.2) -- (-0.2,+0.2);%
\filldraw[gray,draw=black] (-0.2,0.4) circle (0.2);
\end{scope}
}
\begin{document}
\begin{tikzpicture}[show background rectangle]
\EAIOrder{0cm}{0cm}
\EAIOrder{0cm}{1cm}
\EAIOrder{1cm}{0cm}
\EAIOrder{1cm}{1cm}
\EAIOrder{3cm}{0cm}
\EAIOrder{1cm}{2cm}
\end{tikzpicture}
\end{document}
正如我最近了解到的,keyval
你可以使用pgfkeys
已经内置的TikZ
功能来实现命令的花哨增强和可定制性