覆盖 TikZ 风格的某些方面

覆盖 TikZ 风格的某些方面

假设我创建了一个.sty,最终想与其他人分享,其特点如下:

\tikzset{
  photon/.style = {
    draw = black,
    decorate,
    decoration = {
      snake,
      amplitude = 1mm,
      segment length = 3mm
    }
  },
}

以下是文件中的预期用途.tex

\begin{tikzpicture}
\coordinate[vertex] (v1);
\coordinate[vertex, right=of v1] (v2);
\draw[photon] (v1) -- (v2);
\end{tikzpicture}

问题是 和segment lengthamplitude硬编码的。让我的用户更改这些的最佳方法是什么

  1. 每行?
  2. tikzpicture
  3. 全球范围内?

我天真地尝试添加

\tikzset{
    photon/.append style={decoration=segment length=1mm}
}

在文件的开头.tex,但它不起作用:我得到Missing number, treated as zeroTeX capacity exceeded。我感觉这是因为这用替换了整个装饰segment length=1mm

无论如何,这只能解决我的第 3 点和第 2 点(通过放入tikzsettikzpicture

答案1

您缺了一副牙套photon/.append style={decoration={segment length=1mm}}

\documentclass{article}

\usepackage{tikz}

\usetikzlibrary{decorations.pathmorphing,positioning}

\tikzset{
  vertex/.style = {
    % ???
  },
  photon/.style = {
    draw = black,
    decorate,
    decoration = {
      snake,
      amplitude = 1mm,
      segment length = 3mm
    }
  },
}

\begin{document}

\begin{tikzpicture}
  \coordinate[vertex] (v1);
  \coordinate[vertex, right=of v1] (v2);
  \draw[photon] (v1) -- (v2);
\end{tikzpicture}

\tikzset{
  photon/.append style={decoration={segment length=1mm}}
}

\begin{tikzpicture}
  \coordinate[vertex] (v1);
  \coordinate[vertex, right=of v1] (v2);
  \draw[photon] (v1) -- (v2);
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容