如何聲明 tikz“目錄”或鍵組

如何聲明 tikz“目錄”或鍵組

在下面的 mwe 中,我聲明了一個 key /tikz/my key/radius,並進行了設定/tikz/my key以便使用my key={radius=50pt}有效。

例如,這是一種常見模式decorate, decoration={lots of options here}

編輯:我正在尋找一個.is directory標誌,這樣寫作/tikz/my key/.is directory就相當於/tikz/my key/.code={\pgfkeys{/tikz/my key/.cd,#1}}.

我嘗試/tikz/my key使用進行設置/tikz/my key/.is family,但這會影響節點上的所有以下選項,例如它嘗試重新設置debug my key/tikz/my key/debug my key不僅僅是/tikz/debug my key

是否有類似的密鑰處理程序.is family將密鑰設定為接受子密鑰列表,但不適.cd用於其他選項?

\documentclass{article}
\usepackage{tikz}
\begin{document}

\tikzset{
  %/tikz/my key/.is family,
  /tikz/my key/.code={
    \tikzset{%
      my key/.cd,%
      #1%
    }
  },
  /tikz/my key/radius/.initial=10pt,
  /tikz/my key/radius/.default=10pt,
}

\tikzset{
  debug my key/.style={
    my key/radius/.show value,
  }
}

\tikz\node[my key={radius=50pt}, debug my key] {};

\end{document}

答案1

您可以在程式碼中使用 \pgfkeys (如果我正確理解您的問題 - 我不太確定您為什麼想要/需要.is family

\documentclass{article}
\usepackage{tikz}
\begin{document}

\tikzset{
  /tikz/my key/.is family,
  /tikz/my key/.code={
    \pgfkeys{/tikz/my key/.cd,#1}
    }
  ,
  /tikz/my key/radius/.initial=10pt,
  /tikz/my key/radius/.default=10pt,
}

\tikzset{
  debug my key/.style={
    my key/radius/.show value,
  }
}

\tikz\node[my key={radius=50pt}, debug my key, line width=2pt,draw] {blblblb };

\end{document}

順便說一句:你可以查看 pgfmodulesdecoration.code.tex 來發現它也是這樣做的:

 /pgf/decoration/.code={\pgfkeys{/pgf/decoration/.cd,#1}},

相關內容