我想要画一个由正方形组成的三角形,交替地进出,如图所示,使得点 P、Q、R 和 S 共线。
\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[brazil]{babel}
\usepackage{tikz}
\begin{document}
\begin{center}
\begin{tikzpicture}[scale=0.5]
\draw(0,0) rectangle (5,5);
\draw[fill=gray!40] (1.8,2.4)--(0,5)--(5,5)--(1.8,2.4);
\draw[fill=gray!40] (0,0)--(3.2,2.4)--(5,0)--(0,0);
\draw[fill=gray!40] (7.4,1.8)--(5,5)--(5,0)--(7.4,1.8);
\draw[fill=gray!40] (0,0)--(-2.4,3.2)--(0,5)--(0,0);
\end{tikzpicture}
\end{center}
\end{document}
如何改善它?
答案1
在重复的小形状的情况下,键.pic
非常有用。它还可以根据需要接受参数。一般语法如下
\tikzset{
pics/picname/.style={
code={
<pic commands>},
}
}
但在大多数情况下,如果参数少于两个,这种较短的语法就足够了
\tikzset{
picname/.pic={
<pic commands> },
}
有关更多详细信息,请参阅 TikZ 手册。
\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[brazil]{babel}
\usepackage{tikz}
\usetikzlibrary{calc,patterns}
\begin{document}
\tikzset{
tr/.pic={
\draw[pattern=dots] (0,0) -- (0,4cm) -- (30:2cm) -- cycle;
\node at ($(0,0)!1.2!(30:2cm)$) {#1};
}
}
\begin{center}
\begin{tikzpicture}
\path pic[rotate= 0] at (4,0) {tr=S};
\path pic[rotate= 90] at (4,0) {tr=R};
\path pic[rotate=-90] at (0,4) {tr=Q};
\path pic[rotate=180] at (0,4) {tr=P};
\end{tikzpicture}
\end{center}
\end{document}