latex/tikz 宏条件设置 \draw 选项

latex/tikz 宏条件设置 \draw 选项

这是latex/tikz 宏条件

到目前为止,我有这样的事情:

\newif\ifCond
\tikzset{
    cond/.is if=Cond,Cond/.default=false,
}

\newcommand{\myTikZdrawing}[1][Cond=false]{
    \begin{tikzpicture}[#1]
        \draw (0,0) rectangle (1,1);

        \ifCond
        \draw (0,0) rectangle (0.5,0.5);
        \fi
    \end{tikzpicture}
}

到目前为止,这可以用于(取消)激活绘制第二个矩形。但现在我想在执行此宏时设置第一个矩形的背景颜色(最好再次使用 tikz 键)。

到目前为止,我尝试使用.is choice密钥进行如下操作:

\definecolor{color1}{HTML}{cccdf1}

\newif\ifCond
\tikzset{
    cond/.is if=Cond,Cond/.default=false,
    bgCol/blue/.style={fill=color1},
}

\newcommand{\myTikZdrawing}[1][Cond=false]{
    \begin{tikzpicture}[#1]
        \draw (0,0) rectangle (1,1);

        \ifCond
        \draw (0,0) rectangle (0.5,0.5);
        \fi
    \end{tikzpicture}
}

现在我可以传递[bgCol=blue]给绘制命令,但是在文档中稍后使用此宏时我没有找到从外部设置此选项的方法。

有什么建议么?

答案1

像这样吗?

\documentclass{article}
\usepackage{tikz}
\definecolor{color1}{HTML}{cccdf1}

\newif\ifCond
\tikzset{
    Cond/.is if=Cond,Cond/.default=true,
    myrect/.style={},
    bgCol/.is choice,
    bgCol/blue/.code={\tikzset{myrect/.style={fill=color1}}},
    bgCol/red/.code={\tikzset{myrect/.style={fill=red,draw=cyan,dashed}}},
}

\Condtrue

\newcommand{\myTikZdrawing}[1][Cond=false]{
    \begin{tikzpicture}[#1]
        \draw (0,0) rectangle (1,1);

        \ifCond
        \draw[myrect] (0,0) rectangle (0.5,0.5);
        \fi
    \end{tikzpicture}
}
\begin{document}
\myTikZdrawing
\bigskip

\myTikZdrawing[Cond]
\bigskip

\myTikZdrawing[Cond,bgCol=blue]
\bigskip

\myTikZdrawing[Cond,bgCol=red]
\bigskip

\end{document}

在此处输入图片描述

相关内容