TikZ 电路:如何定义别名

TikZ 电路:如何定义别名

我输入了大量的电路,当我使用 LaTeX 时,我使用了 circuitikz 库,它的语法简单而简洁。现在我改用 ConTeXt,我必须使用 TikZ 电路,它在功能方面几乎完美,但也更加冗长。

我想定义别名(例如Rresistor用于l标签,V用于电压箭头等)。我发现此主题,以及 TikZ 手册中的这个例子:

\tikzset{r/.style={radius=#1},rx/.style={x radius=#1},ry/.style={y radius=#1}}

我的第一个问题是我找不到如何使子键正常工作;我不知道如何清楚地解释它,所以这里有一个描述问题的 MWE:

\usemodule[tikz]
\usetikzlibrary[circuits.ee.IEC]
\tikzset{
  R/.style={resistor},
  l/.style={info}
}

\starttext
Basic usage \blank
\starttikzpicture[circuit ee IEC]
  \draw (0,0) to [resistor={near start}] ++(2,0);
  \draw (3,0) to [resistor={info=$a$}] ++(2,0);
\stoptikzpicture

\hairline
My tests
\blank
\starttikzpicture[circuit ee IEC]
  \draw (0,0) to [R={near start}] ++(2,0);
  \draw (3,0) to [R={info=$a$}] ++(2,0);
  \draw (6,0) to [R={l=$a$}] ++(2,0);
  \draw (9,0) to [R] ++(2,0);
\stoptikzpicture

\stoptext

在此处输入图片描述

一旦我使用缩写,所有我可以指定为可选的键都不会被读取,无论我l是否使用缩写作为选项。

我的第二个问题是,我试图定义一个适合我的电压箭头,我circuit declare annotation在 pgf 手册中找到了关键,示例如下:

\tikzset{circuit declare annotation=
  {circular annotation}
  {9pt}
  {(0pt,8pt) arc (-270:80:3.5pt)}
}

但是,我找不到如何制作一个大小与节点大小相关联的箭头;我尝试使用(north east) -- (north west),但在我看来这里没有节点名称,应该写类似的内容(this node.north west)......有没有办法将某些东西指定为“这个节点”?

答案1

要将一个参数的样式复制到另一个参数,可以使用此方法

Newstyle/.style={Oldstyle={#1}}

此处{#1}添加括号以创建包含Oldstyle键列表的组

代码

\usemodule[tikz]
\usetikzlibrary[circuits.ee.IEC]
\tikzset{
  R/.style={resistor={#1}},
  l/.style={info={#1}}
}

\starttext
Basic usage \blank
\starttikzpicture[circuit ee IEC]
  \draw (0,0) to [resistor={near start}] ++(2,0);
  \draw (3,0) to [resistor={info=$a$}] ++(2,0);
\stoptikzpicture

\hairline
My tests
\blank
\starttikzpicture[circuit ee IEC]
  \draw (0,0) to [R={near start}] ++(2,0);
  \draw (3,0) to [R={info=$a$}] ++(2,0);
  \draw (6,0) to [R={l=$a$}] ++(2,0);
  \draw (9,0) to [R] ++(2,0);
\stoptikzpicture

\stoptext

在此处输入图片描述

相关内容