如何在 pgfkeys 中定义默认选择

如何在 pgfkeys 中定义默认选择

我找到了问题使用 pgfkeys 定义的键的默认值运行正常。但我想定义一个.is choice具有默认值的键,但似乎无法让它正常工作。

我尝试了以下方法

\makeatletter
\def\ae@subcolumn@width{\columnwidth/2}
\def\ae@subcolumn@height{\textheight}
\def\ae@par@style{CIAO MOON}
\pgfkeys{/ae/sub/column/.cd,
  width/.store in=\ae@subcolumn@width,
  height/.store in=\ae@subcolumn@height,
  par style/.code/.default={\def\ae@par@style{HELLO WORLD}},
  par style/.is choice,
  par style/raggedright/.code={\let\ae@par@style\raggedright},
  }

\newenvironment{aesubcol}[1]
  {%%
    \pgfkeys{/ae/sub/column/.cd,#1}%%
    \begin{minipage}[t][\ae@subcolumn@height]{\ae@subcolumn@width}%%
    \ae@par@style
  }{%%
    \end{minipage}}
\makeatother

我也尝试使用设置默认值

  par style/.default={\def\ae@par@style{HELLO WORLD}},

或者

  par style/.default/.code={\def\ae@par@style{HELLO WORLD}},

但这些都没有达到预期的效果。

如何为选择键设置默认值?

答案1

默认值is choice选择,因此只需执行以下操作:

\pgfkeys{/tmp/.is choice}
\pgfkeys{/tmp/list/.code={...}}
\pgfkeys{/tmp/.default=list}

这个小例子展示了预期的行为:

\documentclass{article}
\usepackage{pgfkeys}
\begin{document}
\def\tmp{No-choice}
\pgfkeys{/test/my choice/.is choice,
    /test/my choice/list/.code={\def\tmp{list}},
    /test/my choice/array/.code={\def\tmp{array}},
}

\tmp

\pgfkeys{/test/my choice=array}
\tmp

\pgfkeys{/test/my choice=list}
\tmp

\pgfkeys{/test/my choice/.default=list}
\tmp

\pgfkeys{/test/my choice=array}
\tmp

\pgfkeys{/test/my choice}
\tmp

\end{document}

相关内容