重复 tikz 图片的一部分(代表一步一步)

重复 tikz 图片的一部分(代表一步一步)

我正在做分步教程,需要在添加新路径时重复基本 tikz 图片。我试图避免复制/粘贴。我四处查看,尝试使用宏、保存框和 tikz pic 命令,但我无法让它工作(甚至无法编译)。

我在原文中使用了子字幕,但在这里被删除了,因为我认为它不相关。

(编辑:也许像在投影机中使用的东西会很理想?)

使用保存箱:

\documentclass[10pt,a4paper,twoside]{report}
%---------------------------------- tikz ---------------------------------------
\usepackage{tikz}
\usetikzlibrary{positioning,chains,fit,shapes,calc,arrows,patterns,external,shapes.callouts,graphs,decorations.pathreplacing}

\usepackage{fixltx2e} 

\newsavebox{\myborder}
\savebox{\myborder}{%
\begin{tikzpicture}
    \matrix[row sep=10mm,column sep=10mm] {
        % First row:
        \node (a)  {a}; & \node (e) {e}\\
        % Second row:
        \node (b)  {b}; & \node (d) {d} \\
        % Third row:
        \node (c)  {c};  & \node (z) {z} \\
        };
\end{tikzpicture}}

\begin{document}

% align edges

\begin{tikzpicture}
{\usebox{\myborder}}
 \path
          (1) edge  (b); 
\end{tikzpicture}


\begin{tikzpicture}
{\usebox{\myborder}}
   \path
          (a) edge  (b) 
          (a) edge  (c);
\end{tikzpicture}

\end{document}

附有 tikz 图片

    \documentclass[10pt,a4paper,twoside]{report}
    %---------------------------------- tikz ---------------------------------------
    \usepackage{tikz}
    \usetikzlibrary{positioning,chains,fit,shapes,calc,arrows,patterns,external,shapes.callouts,graphs,decorations.pathreplacing}

    \usepackage{fixltx2e} 

\tikzset{radiation/.style={{decorate,decoration={expanding waves,angle=90,segment length=4pt}}},
         antenna/.pic={
        code={\tikzset{scale=5/10}
                \matrix[row sep=10mm,column sep=10mm] {
                % First row:
                \node (a)  {a}; & \node (e) {e}\\
                % Second row:
                \node (b)  {b}; & \node (d) {d} \\
                % Third row:
                \node (c)  {c};  & \node (z) {z} \\
                };
  }}
}

\begin{document}
\begin{tikzpicture}
    \path (0,0) pic[scale=0.5,] {antenna};
        \path
          (1) edge  (b); 

    \path (4,0) pic[scale=0.5,rotate=45] {antenna};
        \path
          (a) edge  (b) 
          (a) edge  (c);
    \path (8,0) pic[scale=0.5,rotate=90] {antenna};
\end{tikzpicture}

\end{document}

答案1

您缺少一些分号,我将未定义替换(1)(d)。LaTeX 有问题,&所以我使用了与号替换。

您可以将宏放在 内部tikzpicture,但不能放在path或内部matrix,至少在不使用 的情况下不能这样做\pgfextra{}。Tikz 使用自己的解析器,其行为与 LaTeX 解析不同。

\documentclass[10pt,a4paper,twoside]{report}
%---------------------------------- tikz ---------------------------------------
\usepackage{tikz}
%\usetikzlibrary{positioning,chains,fit,shapes,calc,arrows,patterns,external,shapes.callouts,graphs,decorations.pathreplacing}

\newcommand{\stepa}{%
\matrix[row sep=10mm,column sep=10mm,ampersand replacement=\&] {
  % First row:
  \node (a)  {a}; \& \node (e) {e}; \\
  % Second row:
  \node (b)  {b}; \& \node (d) {d}; \\
  % Third row:
  \node (c)  {c}; \& \node (z) {z}; \\
};}

\newcommand{\stepb}{\path (d) edge  (b);}

\newcommand{\stepc}{\path (a) edge  (c);}

\begin{document}

\begin{tikzpicture}
\stepa
\end{tikzpicture}
\hfill
\begin{tikzpicture}
\stepa
\stepb
\end{tikzpicture}
\hfill
\begin{tikzpicture}
\stepa
\stepb
\stepc
\end{tikzpicture}

\end{document}

逐步 tikzpicture

相关内容