具有可选/默认参数的 TikZ Pics

具有可选/默认参数的 TikZ Pics

我正在尝试建立一个小型的 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
}

相关内容