我想绘制具有固定角度、宽度和高度的平行四边形,但trapezium
在 PGF/TikZ 中似乎无法在不改变角度的情况下指定高度。
\documentclass[tikz]{standalone}
\usetikzlibrary{shapes.geometric}
\begin{document}
\begin{tikzpicture}
\tikzstyle{every node}=[trapezium, draw, minimum width=3cm,
trapezium left angle=120, trapezium right angle=60]
\node[trapezium stretches body]
at (0,0) {A};
\node[trapezium stretches body, rotate=-30]
at (0,1.5) {A rotate $-30^\circ$};
\node[minimum height=1cm, trapezium stretches body]
at (5,0) {B};
\node[minimum height=1cm, trapezium stretches body, rotate=-30]
at (5,1.8) {B rotate $-30^\circ$};
\node[minimum height=1cm]
at (0,-2) {C};
\node[minimum height=1cm, rotate=-30]
at (0,-4) {C rotate $-30^\circ$};
\node[minimum height=1cm, trapezium stretches]
at (5,-2) {D};
\node[minimum height=1cm, trapezium stretches, rotate=-30]
at (5,-4) {D rotate $-30^\circ$};
\end{tikzpicture}
\end{document}
输出:
我想要一个与 A 相同宽度且垂直加粗的版本。
A 和 B 的角度不同,只需添加“最小高度“。旋转版 A 有垂直的西/东边,这就是我需要的。旋转版 B 没有垂直的西/东边,但是,我需要一个与 A 具有相同角度和宽度的“更高”平行四边形。
C:删除“梯形伸展身体“导致平行四边形的宽度和高度不受控制。D:将“梯形拉伸身体”替换为“梯形伸展“毫无帮助。
答案1
也许下面的内容可以更好地解释正在发生的事情。当文本越来越短,而节点越来越高并且随着文本越来越长而越来越短时,发生的奇怪事情是由于遵守了约束。
\documentclass[tikz]{standalone}
\usetikzlibrary{shapes.geometric}
\begin{document}
\begin{tikzpicture}
\tikzstyle{every node}=[trapezium, draw, minimum width=3cm,
trapezium left angle=120, trapezium right angle=60]
\node[trapezium stretches=false,minimum height=1cm]
at (0,0) {A};
\node[trapezium stretches=false,minimum height=1cm]
at (0,1.5) {\fbox{A long }};
\node[trapezium stretches=false,minimum height=1cm]
at (0,3) {\fbox{A long text}};
\draw[thick,green,|-|] (-1.5,-.5) -- (1.5,-0.5);
\draw[thick,green,|-|] (-1.5,0.5) -- (-1.5,-0.5);
\draw[thick,blue,|-|] (-1.5,1) -- (1.5,1);
\draw[thick,blue,|-|] (-1.5,1) -- (-1.5,2);
\draw[thick,red,|-|] (-1.5,2.5) -- (1.5,2.5);
\draw[thick,red,|-|] (-1.5,2.5) -- (-1.5,3.5);
\end{tikzpicture}
\end{document}
我们看到,最小宽度和最小高度受到尊重,然后如果有任何空间,那么节点会变得更高,因为没有对此的限制。换句话说,只有对最小值而不是最大值的限制,因此在底部示例中,最小值受到尊重,然后尝试匹配角度。如果节点较短且角度固定,则不会考虑最小高度等。因此,为此提出了一些选项,即拉伸选项。如果我们将所有 false 键变为 true,我们得到
因此,形状的角度会变形以符合约束。同样,键trapezium stretches body
只会拉伸宽度。但如果设置了角度,那么就需要遵守约束,然后检查角度是否可行。因此需要不同类型的约束。这可能是在锚点处使用标签center
或将其绘制在节点顶部,而不管大小等。