我有以下情况。
\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 glow
newLastPoseEstimate
newEntity
newLastPoseEstimate2
我添加了我想要的新样式。但是发光的东西应该采用某种基本样式。希望您明白我的意思。
答案1
感谢 MWE 的热情帮助。
每一种pgfkeys
风格,因此每一种 Ti钾Z 样式foo
,在使用 定义时接受一个参数foo/.style={...}
。因此,您可以使用样式的参数newEntity
动态传递您想要的任何选项,例如shadow scale=2
,在circular glow={...}
使用的选项中newEntity
。为了不破坏 的现有用法,只需将此参数的默认值定义为空标记列表。每当 调用 而没有显式值时,就会使用newEntity
分配给 的值,例如与 相对。newEntity/.default
newEntity
\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}