如何更改分层样式中的设置?

如何更改分层样式中的设置?

我有以下情况。

\documentclass{article}

\usepackage{pgf}
\usepackage{tikz}
\usetikzlibrary {shadows}
\tikzset{newEntity/.style={
        circular glow={fill=red},
    },
}

\tikzset{poseEstimate/.style={
        circle,
        draw,
        fill=yellow
    },
}

\tikzset{
    newLastPoseEstimate/.style={
            poseEstimate,
            newEntity,
            shadow scale=2
           },
}


\tikzset{
    newLastPoseEstimate2/.style={
            poseEstimate,
            circular glow={fill=red,shadow scale=2}
           },
}

\begin{document}

\begin{tikzpicture}
\draw
    node[newLastPoseEstimate] {not working} ++(3,0)
    node[newLastPoseEstimate2] {working};
\end{tikzpicture}

\end{document}

但是我想在样式中更改样式shadow scale的属性。从中复制的所有其他样式都不应受到影响。circular glownewLastPoseEstimatenewEntity

newLastPoseEstimate2我添加了我想要的新样式。但是发光的东西应该采用某种基本样式。希望您明白我的意思。

在此处输入图片描述

答案1

感谢 MWE 的热情帮助。

每一种pgfkeys风格,因此每一种 TiZ 样式foo,在使用 定义时接受一个参数foo/.style={...}。因此,您可以使用样式的参数newEntity动态传递您想要的任何选项,例如shadow scale=2,在circular glow={...}使用的选项中newEntity。为了不破坏 的现有用法,只需将此参数的默认值定义为空标记列表。每当 调用 而没有显式值时,就会使用newEntity分配给 的值,例如与 相对。newEntity/.defaultnewEntity\tikzset{newEntity}\tikzset{newEntity=whatever}

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shadows}

\tikzset{
  newEntity/.style={
    circular glow={fill=red, #1}, % here, we use the argument
    newEntity/.default={},        % it's empty by default
  },
  poseEstimate/.style={
    circle,
    draw,
    fill=yellow
  },
  newLastPoseEstimate/.style={
    poseEstimate,
    newEntity,                    % the default value is used here
  },
  newLastPoseEstimate2/.style={
    poseEstimate,
    newEntity={shadow scale=2},   % argument explicitly specified
  },
}

\begin{document}

\begin{tikzpicture}
\draw node[newLastPoseEstimate] {working 1} ++(3,0)
      node[newLastPoseEstimate2] {working 2};
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容