我正在尝试将框图转换为乳胶源。获得精确位置的精确形状并在它们之间绘制互连的最佳方法是什么?形状只是矩形、圆形和椭圆形。没有什么太复杂的自定义。我尝试了“ node
,draw
”方法,但乳胶似乎自己决定了大小。
编辑:这是我尝试过的:
\documentclass[tikz,14pt,border=10pt]{standalone}
\usepackage{textcomp}
\usetikzlibrary{shapes,arrows}
\begin{document}
\begin{tikzpicture}[auto, thick, node distance=1px, >=triangle 45]
\node at (27, 14)[rectangle, minimum height=40pt]{A};
\node at (10, 17)[circle]{B};
\node at (40, 12)[circle]{C};
\node at (29, 25)[circle]{D};
\node at (11, 30)[circle]{E};
\end{tikzpicture}
\end{document}
答案1
默认情况下不绘制边框node
。如果您希望绘制边框,请添加draw
到node
选项中,即
\node [draw] {a};
我还建议您style
为不同的形状定义 s。这样可以更轻松地修改图表,因为您只需修改样式,而不是每个节点的设置。您可以使用
\tikzset{NameOfStyle/.style={<list of settings>}}
下面是一个例子。
其他一些评论:
在默认类中,
14pt
不是一个有效的选项,您可以在 和 之间进行选择10pt
。11pt
由于12pt
默认情况下standalone
用作article
基类,因此您会收到警告LaTeX Warning: Unused global option(s): [14pt].
在某种程度上,这或许是一个偏好问题,但手册中描述了节点的选项( 中的部分
[]
)应该直接位于 之后node
,而不是像您的代码中那样位于 之后。不过,它仍然适用于您的放置。手册中写道:\path node <foreach statements>[<options>](<name>)at(<coordinate>){<node contents>} ...;
尽管该
arrows
库仍然有效,但它已被弃用,取而代之的是较新的arrows.meta
库,该库在手册的第 16.5 节中进行了描述。您使用的键
node distance
仅在您将一个节点相对于另一个节点放置时才有意义。为此,添加\usetikzlibrary{positioning}
然后如果你有
\node (a) {aaaa};
,你可以说\node[right=of a] {b};
将第二个节点放置在
node distance
第一个节点右侧定义的距离处。
\documentclass[tikz,12pt,border=10pt]{standalone}
\usepackage{textcomp}
\usetikzlibrary{shapes,arrows.meta}
\tikzset{
MyBox/.style={draw,minimum height=40pt,minimum width=2cm},
MyCirc/.style={draw,circle,minimum size=50pt}
}
\begin{document}
\begin{tikzpicture}[auto, thick, node distance=1px, >=Triangle]
\node [MyBox] (a) at (27, 14) {A};
\node [MyCirc] (b) at (10, 17) {B};
\node [MyCirc] (c) at (40, 12) {C};
\node [MyCirc] (d) at (29, 25) {D};
\node [MyCirc] (e) at (11, 30) {E};
\draw (a) -- (b) -- (d) -- (c) -- (e);
\end{tikzpicture}
\end{document}
答案2
以下 MWE 对我有用。我使用最小高度和宽度以及最小文本宽度。
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[
block/.style={rectangle, thick, draw, minimum height=9mm, minimum width=10mm,text width=15mm,align=center},
connection/.style={->,thick},]
\node[block] (A) at (1.5,0) {Block A};
\node[block] (B) at (3.5,0) {Block B};
\draw[connection] (A.east) -- (B.west);
\end{tikzpicture}
\end{document}