如何稍后将 pgfkey 用作多个密钥(例如在 tikzpicture 环境中)

如何稍后将 pgfkey 用作多个密钥(例如在 tikzpicture 环境中)

我通常会定义新的 latex 命令来自动化我的绘图,以便pgfkey使用良好的键值语法。例如:

\MyCircle[radius=0.2cm]

后来,我经常发现需要扩展这些命令。例如,我可能想使用以下选项来获得覆盖图片:

remember picture, overlay, shift={(-1,-0.3)}

因此,为了增加一些灵活性,我考虑添加一个可选tikzoptions键:

\MyCircle[radius=0.2cm,%
          tikzoptions={ remember picture, overlay, shift={(-1,-0.3)} },%
         ]

事实证明,这并不像我想象的那么容易,并且以下尝试不起作用:

\documentclass[varwidth,margin=0.5cm]{standalone}
\usepackage{tikz}

\newcommand{\MyCircle}[1][]{{%
  \pgfkeys{/MyCircle/.cd,%
    radius/.store in=\radius,%
    radius=1,%
    tikzoptions/.store in=\tikzoptions,%
    tikzoptions=,%
  }%
  \pgfkeys{/MyCircle/.cd, #1}%
  \begin{tikzpicture}[\tikzoptions]
    \draw (0,0) circle (\radius);
  \end{tikzpicture}%
}}

\begin{document}

-- Normal picture 
\MyCircle[radius=0.2cm]

-- Overlay picture 
\MyCircle[radius=0.2cm,%
          tikzoptions={ remember picture, overlay, shift={(-1,-0.3)} }]

\end{document}

预期输出如下:

预期输出

我如何将 的内容用作环境\tikzoptions的多个关键参数tikzpicture?有没有更好的方法来实现我想要做的事情?

答案1

您必须使用.style处理程序:

\documentclass[varwidth,margin=0.5cm]{standalone}
\usepackage{tikz}

\newcommand{\MyCircle}[1][]{{%
    \pgfkeys{/MyCircle/.cd,
      radius/.store in=\radius,
      radius=1,
      tikzoptions/.style={tikzstyle/.style={##1}},
      tikzoptions={},
    }%
    \pgfkeys{/MyCircle/.cd,#1}%
    \begin{tikzpicture}[/MyCircle/tikzstyle]
      \draw (0,0) circle (\radius);
    \end{tikzpicture}%
  }}

\begin{document}

-- Normal picture 
\MyCircle[radius=0.2cm]

-- Overlay picture 
\MyCircle[radius=0.2cm,%
tikzoptions={ remember picture, overlay, shift={(-1,-0.3)} }]

\end{document}

在此处输入图片描述

相关内容