latex/tikz latex 宏使用宏时指定节点文本(使用 tikz 键)

latex/tikz latex 宏使用宏时指定节点文本(使用 tikz 键)

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

我有类似的东西

\definecolor{color1}{HTML}{cccdf1}

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

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

        \ifCond
        \draw[myrect] (0,0) rectangle (0.5,0.5) node[midway] {text};
        \fi
    \end{tikzpicture}
}

现在我想在文档中稍后使用宏时使用一些 tikz 键指定节点文本的内容。

答案1

您可以将 pgf 键的值存储在您填写节点的某个宏中。pgf 键可以更改。

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

\newif\ifCond
\tikzset{
    Cond/.is if=Cond,Cond/.default=true,
    myrect/.style={},
    my text/.store in=\mytext,
    my text={A},
    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) node[midway] 
        {\mytext};
        \fi
    \end{tikzpicture}
}
\begin{document}
\myTikZdrawing
\bigskip

\myTikZdrawing[Cond]
\bigskip

\myTikZdrawing[Cond,bgCol=blue,my text=B]
\bigskip

\myTikZdrawing[Cond,bgCol=red,my text=C]
\bigskip

\end{document}

在此处输入图片描述

如果您不想在此“浪费”宏,您可以使用\pgfkeysvalueof密钥/.initial处理程序。

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

\newif\ifCond
\tikzset{
    Cond/.is if=Cond,Cond/.default=true,
    myrect/.style={},
    my text/.initial={A},
    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) 
            node[midway] 
        {\pgfkeysvalueof{/tikz/my text}};
        \fi
    \end{tikzpicture}
}
\begin{document}
\myTikZdrawing
\bigskip

\myTikZdrawing[Cond]
\bigskip

\myTikZdrawing[Cond,bgCol=blue,my text=B]
\bigskip

\myTikZdrawing[Cond,bgCol=red,my text=C]
\bigskip

\end{document}

结果如上。

相关内容