我正在尝试建立一个小型的 TikZ 库或包含可重复使用的图片的包。
因此,我创建了一个名为“tikzlibraryBES.code.tex”的文件,其内容如下:
\tikzset{
% House
pics/house/.style args={#1/#2/#3}{
code={
% Define house parameters
\newcommand\wallheight{#1} % 0.65
\newcommand\roofoverhang{#2} % 0.15
\newcommand\roofangle{#3} % 35
% Calculate some dependent sizes
\pgfmathsetmacro\lengthroof{0.5/cos(\roofangle)+\roofoverhang}
% draw profile of house
\draw[line width=1pt] (-0.5,\wallheight) -- (-0.5,0) -- (0.5,0) -- (0.5,\wallheight) -- ++(-\roofangle:\roofoverhang) -- ++(180-\roofangle:\lengthroof) -- ++(180+\roofangle:\lengthroof) -- cycle;
}},
}
我还有另一个想要使用该库的文件:
\documentclass[varwidth=false, border=2pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows,positioning}
% Load tikz library in file "tikzlibraryBES.code.tex"
\usetikzlibrary{BES}
\begin{document}
\begin{tikzpicture}
\path (+1.5,-0.85) pic[scale=1.0] {house=0.65/0.15/35};
\end{tikzpicture}
\end{document}
到目前为止,一切都很好,但是,我希望使用以下命令选择使用默认值创建房屋形状:
\path (+1.5,-0.85) pic[scale=1.0] {house};
我该如何实现这一点:如果没有提供参数,则使用一些默认值?
答案1
.default
只需在通话结束时添加一个键\tikzset
:
\tikzset{
% House
pics/house/.style args={#1/#2/#3}{
code={ Code of the pic }
},
pics/house/.default=0.65/0.15/35
}