PGFKeys键可以是代码键,也可以是用.初始
键(设置初始值),其他一切都是一个代码键。(内部存储有/.@cmd公司
后缀。)
当您或您的用户使用密钥时,即。填充=真
或者只是填满
,PGFKeys解析器必须找出键的实际作用及其工作方式。这个过程相当简单:它首先检查它是否是代码键,如果是,则使用给定的值(可能是默认值
–其中.是如果
设置为真的
–或特殊的无值标记)。就这样。
只有当它不是代码键时,PGFKeys才会检查它是否是值键,以及是否存在给定的显式值,并将value-key设置为该值键(否则它只返回键的值)。
你为什么需要\如果填满
?如果你只是想设置填充状态
:
\文档类{article}\使用包{tikz}\提克兹特{MyCmdSettings/.cd,filled/.是选项,filled/.append code=\pgfkeysseevalue{/tikz/MyCmdSettings/filled}{#1},fill/true/.style={/tikz/FillStyle/.style={fill=浅灰色}},filled/false/.style={/tikz/FillStyle/.style={fill=none}},filled/.default=true,%filledfilled=truefilled=false}%初始化FillStyle和值\新命令{\MyCmd}[1][]{%\开始{tikzpicture}[nodes={align=left,font=\footnotesize},MyCmdSettings/.cd,#1]\绘制[cyan,thick,FillStyle]圆[radius=5mm]节点[下方=7mm,黑色,绘制]{filled:\pgfkeysvalueof{/tikz/MyCmdSettings/filled}};\结束{tikzpicture}}\开始{文档}\MyCmd~~\MyCmd[filled=false]~~\MyCmd[felled]\结束{文档}
您可以更进一步,为用户提供一个界面来更改这两种不同样式的外观(可能其中一种想要另一种颜色,也可能另一种想要图案而不是填充区域):
\文档类{article}\使用包{tikz}\提克兹特{MyCmdSettings/.cd,FillStyle/yes/.style={fill=lightgray},FillStyle/no/.style={fill=none},filled/.是选项,filled/.append code=\pgfkeysseevalue{/tikz/MyCmdSettings/filled}{#1},filled/true/.style={/tikz/FillStyle/.syle={MyCmdSettings/FillStyle/yes}},filled/false/.style={/tikz/FillStyle/.style={MyCmdSettings/FillStyle/no}},filled/.default=true,%filledfilled=truefilled=false}%初始化FillStyle和值\新命令{\MyCmd}[1][]{%\开始{tikzpicture}[节点={align=left,font=\footnotesize},MyCmdSettings/.cd,#1]\绘制[cyan,thick,FillStyle]圆[radius=5mm]节点[以下=7mm,黑色,绘制]{filled:\pgfkeysvalueof{/tikz/MyCmdSettings/filled}};\结束{tikzpicture}}\开始{文档}\我的命令~~\MyCmd[filled=false]~~\MyCmd[filled,FillStyle/yes/.style={fill=red}]\结束{文档}
当然,如果使用填充样式/\ifthefilled yes\else no\fi
:
\文档类{article}\使用包{tikz}\newif\if已填充\提克兹特{MyCmdSettings/.cd,FillStyle/yes/.style={fill=lightgray},FillStyle/no/.style={fill=none},filled/.is if=thefilled,filled/.append code=\pgfkeysseevalue{/tikz/MyCmdSettings/filled}{#1},已填充/.initim=false}%初始化值\新命令{\MyCmd}[1][]{%\开始{tikzpicture}[节点={align=left,font=\footnotesize},MyCmdSettings/.cd,#1]\绘制[cyan,thick,MyCmdSettings/FillStyle/\ifthefilled yes\else no\fi]圆[radius=5mm]节点[以下=7mm,黑色,绘制]{filled:\pgfkeysvalue of{/tikz/MyCmdSettings/filled}};\结束{tikzpicture}}
所有解决方案都使用.append代码
键上的处理程序填满
让它也设置它的值-关键部分。这样,给定的值就会被存储起来,并可以在必要时进行检索。
如果您经常需要这样做,我们可以为这两者创建包含此内容的处理程序.是如果
和.是选择
.