tikzpicture 范围内多个变量失败

tikzpicture 范围内多个变量失败

你好,我的文档中有一个重复的条形图形。所以我想创建一个有 4 个参数的范围。x 和 y 距离中心点以及 dx dy 位移。(稍后可能是颜色,但这可能是另一个问题)

我从带有范围的基本 tikzfigure 开始。之后我创建了newcommand{}{}。添加参数它开始失败。我试图找出它(开始)中断(中断)的位置。使用单个参数它运行良好(barfig)。但添加第二个参数(bargigg)会失败。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{xcolor}
\usepackage{tikz}
\usetikzlibrary{shapes, snakes, calc}


\newcommand{\barfig}[1]
{%
    \begin{scope}[shift={(0 cm,0 cm)}]
        \draw (- #1,-1.5) rectangle (#1, 1.5);
%       3D
        \draw (- #1,1.5) -- (- #1, 1.5,-1.5) ;
        \draw (- #1,-1.5) -- (- #1, -1.5,-1.5) ;
        \draw (#1,1.5) -- (#1, 1.5,-1.5) ;
        \draw (#1,-1.5) -- (#1, -1.5,-1.5) ;
        \draw[thick, red, dash pattern=on 2pt off 3pt on 8pt off 3pt] (0,1.5+0.5) --(0,-1.5-0.5);
        \draw[thick, red, dash pattern=on 2pt off 3pt on 8pt off 3pt] (#1+0.5,0) --(- #1 -0.5,0);
        \fill[blue] (0,0) circle [radius=2pt] node[above right] {$D$};
    \end{scope}
}


\newcommand{\barfigg}[2]
{%
    \begin{scope}[shift={(0 cm,0 cm)}]
        \draw (- #1,- #2) rectangle (#1, #2);
        %       3D
        \draw (- #1, #2) -- (- #1, #2, -1.5) ;
        \draw (- #1, -#2) -- (- #1, - #2, -1.5) ;
        \draw (#1, #2) -- (#1, #2, -1.5) ;
        \draw (#1,- #2) -- (#1, - #2, -1.5) ;
        \draw[thick, red, dash pattern=on 2pt off 3pt on 8pt off 3pt] (0,#2 +0.5) --(0,- #2-0.5);
        \draw[thick, red, dash pattern=on 2pt off 3pt on 8pt off 3pt] (#1+0.5,0) --(- #1 -0.5,0);
        \fill[blue] (0,0) circle [radius=2pt] node[above right] {$D$};
    \end{scope}
}

\begin{document}
    \begin{tikzpicture}
        \barfig{1};
        \barfigg{1, 1.5};
    \end{tikzpicture}

\end{document}

有人能解释一下哪里出了问题吗?或者也许我哪里做错了……

答案1

您使用错误的语法调用命令,您应该使用:

\barfigg{1}{1.5}

是正确的:尽管tikz使用键值对作为其可选参数,但具有两个强制参数的命令会在分隔的平衡花括号对中接受它们。

这对所有命令和强制参数编号均有效。

然后使用

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{xcolor}
\usepackage{tikz}
\usetikzlibrary{shapes, snakes, calc}


\newcommand{\barfig}[1]
{%
    \begin{scope}[shift={(0 cm,0 cm)}]
        \draw (- #1,-1.5) rectangle (#1, 1.5);
%       3D
        \draw (- #1,1.5) -- (- #1, 1.5,-1.5) ;
        \draw (- #1,-1.5) -- (- #1, -1.5,-1.5) ;
        \draw (#1,1.5) -- (#1, 1.5,-1.5) ;
        \draw (#1,-1.5) -- (#1, -1.5,-1.5) ;
        \draw[thick, red, dash pattern=on 2pt off 3pt on 8pt off 3pt] (0,1.5+0.5) --(0,-1.5-0.5);
        \draw[thick, red, dash pattern=on 2pt off 3pt on 8pt off 3pt] (#1+0.5,0) --(- #1 -0.5,0);
        \fill[blue] (0,0) circle [radius=2pt] node[above right] {$D$};
    \end{scope}
}


\newcommand{\barfigg}[2]
{%
    \begin{scope}[shift={(0 cm,0 cm)}]
        \draw (- #1,- #2) rectangle (#1, #2);
        %       3D
        \draw (- #1, #2) -- (- #1, #2, -1.5) ;
        \draw (- #1, -#2) -- (- #1, - #2, -1.5) ;
        \draw (#1, #2) -- (#1, #2, -1.5) ;
        \draw (#1,- #2) -- (#1, - #2, -1.5) ;
        \draw[thick, red, dash pattern=on 2pt off 3pt on 8pt off 3pt] (0,#2 +0.5) --(0,- #2-0.5);
        \draw[thick, red, dash pattern=on 2pt off 3pt on 8pt off 3pt] (#1+0.5,0) --(- #1 -0.5,0);
        \fill[blue] (0,0) circle [radius=2pt] node[above right] {$D$};
    \end{scope}
}

\begin{document}
    \begin{tikzpicture}
        \barfig{1};
        \barfigg{1}{1.5};
    \end{tikzpicture}

\end{document}

生产

在此处输入图片描述

相关内容