我有一些 TikZ 代码,我想在其中加宽输出的底部,同时保留顶部的宽度。(糟糕的表述,不知道如何很好地表述这一点。)
例如,假设我有一些正方形
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
% Not my actual code snippet, but for simplicity, let's just draw a square
\draw (-1, -1) -- (1, -1) -- (1, 1) -- (-1, 1) -- cycle;
\end{tikzpicture}
\end{document}
现在,对于这个简单的例子,很容易加宽输出的底部,只需画一个等腰梯形,而不是像
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
% The top's width is preserved, while the bottom's width is stretched
\draw (-2, -1) -- (2, -1) -- (1, 1) -- (-1, 1) -- cycle;
\end{tikzpicture}
\end{document}
然而,对于更复杂的代码片段,我无法访问。
如何将一般的矩形输入转换为等腰梯形输出?环境scope
有用吗?
答案1
以下是使用语句绘制和重复使用等腰梯形的方法\pic
:
\pic
你定义在-style中绘制什么- 您使用的
\pic
非常类似于\node
。
解决方案分为两部分:
-
- 绘制固定梯形,展示基础知识
-
- 允许将参数传递给
\pic
,有点高级
- 允许将参数传递给
第 1 部分:固定梯形
基本思想很简单:
- 定义 4 个坐标
- 画一条闭合线(这就是它的
cycle
作用) - 将此图片风格称为
trap
\pic
如图所示调用,并设置一些选项。
\pic at (0,0) {trap};
第 2 部分:柔性梯形
这里的新内容是传递 3 个参数,我决定将它们用作/
分隔符。这样做的开销trap
有点不同,但您应该看到与上面相同的坐标和绘图。还请注意参数 #1、#2 和 #3 的替换。指定 pic 和参数:
\pic at (0,0) {trap={2/4/1}};
代码:
\documentclass[10pt,border=3mm,tikz]{standalone}
\begin{document}
\begin{tikzpicture}[
trap/.pic={
\coordinate (A) at ( 3,0);
\coordinate (B) at (-3,0);
\coordinate (C) at (-2,1);
\coordinate (D) at ( 2,1);
%
\draw (A) -- (B) -- (C) -- (D) -- cycle;
}
]
\pic at (0,0) {trap};
\pic[scale=.5,rotate=30] at (0,-2) {trap};
\end{tikzpicture}
\begin{tikzpicture}
[
pics/trap/.style args={#1/#2/#3}% bottom, top, height
{
code={
\coordinate (A) at ( #1,0);
\coordinate (B) at (-#1,0);
\coordinate (C) at (-#2,#3);
\coordinate (D) at ( #2,#3);
%
\draw (A) -- (B) -- (C) -- (D) -- cycle;
}
}
]
\pic at (0,0) {trap={2/4/1}};
\pic[scale=.5,rotate=-30] at (0,-2) {trap={3/1/2}};
\end{tikzpicture}
\end{document}