circuitikz 元素上的装饰

circuitikz 元素上的装饰

我试图用 TikZ 创建一个看起来像手绘的原理图。不幸的是,circuitikz 似乎不能很好地与装饰库配合使用。请参阅以下示例:

\documentclass{standalone}

\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{positioning,decorations.pathmorphing}
\usepackage[european]{circuitikz}

\begin{document}
\begin{tikzpicture}[
    decoration={random steps,segment length=1pt,amplitude=0.2pt},
    every path/.append style=decorate,
    %every node/.append style=decorate % <- error
    ]

    \path (0,0) node[op amp] (oa) {{\small $OA_1$}};    

    \draw (oa.-) -- ++($(oa.-)-(oa.+)$) coordinate(tmp) to[R,l=$R$] (tmp -| oa.out) -- (oa.out);
    \draw (oa.-) to[short,*-,i_<=$I_\text{in}$] ++($(oa.center)-(oa.bout)$);
    \draw (oa.+) to[short,-o] ++ ($(oa.in up)-(oa.bin up)$) node[left]{$V_\text{ref}$};
    \draw (oa.out) to[short,*-o] ++ ($(oa.out)-(oa.bout)$) node[right]{$V_\text{out}$};

    \path (oa.+ -| oa.out) node [rectangle, draw, decorate] {test};

\end{tikzpicture}
\end{document}

输出

该样式并不适用于所有电路元件。如果我使用,every node/.append style=decorate则会收到错误:

包 pgf 错误:我无法修饰空路径。

有没有办法来解决这个问题?

答案1

不幸的是,我认为这几乎是不可能的。

circuitikz组件(基本上)被写成\behindbackground形状的元素。这意味着它们用独立的路径绘制,独立描边。大多数(或至少很多)组件都需要这样做,因为我们需要具有不同粗细、虚线、箭头和有时颜色的子路径;而这些属性不能在 Ti 中的单个路径中混合使用Z。

因此,组件绘图命令中通常有不同的路径,并且必须逐个路径应用装饰(如果我理解正确的话)。

我正在添加钩子系统circuitikz钩子最近在 LaTeX 中很流行!)但这些只是在形状绘制的开始和结束处,因为每个形状都有不同的绘制模式。我试图用它们来强制装饰,但没有成功。

我会继续思考这个问题,但就目前而言,答案是否定的,这是不可能的。

相关内容