我喜欢画下面的画:
它是用以下代码生成的:
\documentclass[12pt,tikz,border=3mm]{standalone}
% \usepackage{zfc-book-standalone}
\usetikzlibrary{arrows.meta,positioning,shapes}
%---------------------------------------------------------------%
\begin{document}
\begin{tikzpicture}[
node distance = 0mm and 0mm,
L/.style = {line width=1mm, draw=gray,
arrows={-Stealth[fill=gray,inset=0pt,length=0pt 1.2,angle'=90]},
},
T/.style 2 args = {name=n#1,
draw=#2, fill=#2!20,% draw and fill color
trapezium,
trapezium stretches body,
trapezium left angle=105, trapezium right angle=75,
inner sep=0mm, outer sep=0mm,
text width=33mm, text height=4mm,
rotate=-15,
}
]
%--------
\node[T={1}{teal}] {} (0,0);
\node[T={2}{teal}, below right=of n1.bottom left corner,
anchor=top left corner] {};
\node[T={3}{teal}, below right=of n2.bottom left corner,
anchor=top left corner] {};
%--------
\node[T={4}{cyan}, trapezium left angle=75, trapezium right angle=105,
text height=3mm, %text width=33mm + 2.8977/2 mm,
rotate=30,
below left =of n3.bottom right corner,
anchor=top right corner] {};
%--------
\foreach \i [count=\xi from 4] in {5,6,7}
\node[T={\i}{teal},below right=of n\xi.bottom left corner,
anchor=top left corner] {};
%--------
\foreach \i in {1,2,...,7}
\draw[L,shorten <=11mm,shorten >=11mm]
\ifnum\i=4
(n4.east) -- (n4.west)
\else
(n\i.west) -- (n\i.east)
\fi;
%--------
\draw[red,ultra thin] (n1.top left corner) |- (n7.bottom left corner)
(n1.top right corner) |- (n7.bottom right corner);
%----------------
\end{tikzpicture}
\end{document}
我阅读了这里所有相关的问题,但没有找到解决方案,如何确定梯形中的角度,使得左形状边框对齐(参见堆栈左侧红线指出的差异)。
问题: 除了猜测之外,有没有办法根据给定的旋转角度、梯形宽度和高度确定左、右梯形,使得左(和右)形状边框对齐,即位于垂直线上?
编辑: 再次阅读后绘制具有固定角度、宽度和高度的平行四边形?,正如“percusse”所建议的,我意识到,如果我用通过文本宽度和文本高度获得的固定测量值来改变上述 MWE 最小宽度和高度,我就能解决大多数问题:
以下仍开放问题:
如何确定文本宽度,使其独立于文本高度?
答案1
为什么不直接画出来呢?这样可以得到:
代码更简单:
\documentclass[12pt,tikz,border=3mm]{standalone}
\usetikzlibrary{arrows.meta,positioning,shapes}
\begin{document}
\begin{tikzpicture}[scale=0.5,T/.style={draw=#1,fill=#1!20},
L/.style = {line width=1mm, draw=gray,
arrows={-Stealth[fill=gray,inset=0pt,length=0pt 1.2,angle'=90]}}]
\draw[T=teal](0,10)--(8,9)--(8,6)--(0,7)--cycle;
\draw[T=cyan](8,6)--(8,5)--(0,4)--(0,5)--cycle;
\draw[T=teal](0,4)--(8,3)--(8,0)--(0,1)--cycle;
\foreach \ht in {9,8,3,2} {
\draw[teal] (0,\ht)--++(8,-1);
}
\foreach \ht in {1.25,2.25,3.25,7.25,8.25,9.25} {
\draw[L](2,\ht)--++(4,-0.5);
}
\draw[L](6,5.25)--++(-4,-0.5);
\draw[step=5mm] (0,0) grid (10);
\draw[red](0,0)--(0,10);% for comparing the LHS
\end{tikzpicture}
\end{document}
当然,如果这是更普遍的东西的一部分,那么这可能不合适......也许我对你的尺寸做出了错误的猜测,但它看起来很接近你想要的 MWE。
对于“具有一般角度的梯形”,我会使用该calc
库进行计算,然后以相同的方式绘制相应的坐标。