CircuiTikz 虚线上的虚线当前箭头

CircuiTikz 虚线上的虚线当前箭头

我希望使用当前箭头在虚线上添加当前标签。但是当我这样做时,箭头的边框也是虚线,看起来很糟糕。

这是我的代码:

\begin{circuitikz}
    \draw (0,0) to[V={\small $V_{CC}$}] (0,2) to (5,2) to[R, l={\rotatebox[origin=c]{-90}{{\small $Charge$}}}] (5,0) to (0,0); 
    \draw[color=red, thick] (3,2) to[short, *-] (2.75,0.75) to (3.25, 1.25) to[short, -*] (3,0);
    \draw[color=red, thick, dashed] (0.1,1.9) to[short, i={\small $i_{d\acute efaut}$}] (2.65,1.9) to (2.65,0.1) to (0.1,0.1) to (0.1,1.9);
\end{circuitikz}

它看起来像: 直流电路短路错误图像,短路电流箭头存在视觉问题

我希望它看起来像这样: 直流电路发生短路错误后不再出现问题的图像

我真的不知道该怎么做才能让它看起来像我想要的那样。我已经尝试向对象添加或,solid但没有成功。dash=soliddash pattern=onshort

答案1

是的,你被这个事实困扰了,即dash绘制节点的绘制例程继承了currarrow。将虚线模式更改为元素short不起作用(虚线对于路径是全局的,你可以查看手册中常见问题解答中的讨论)。

你有两个解决方案:

  1. (如果您只想要一个当前箭头):使用advanced currents and voltages(目前为第 5.6 节)这个;

  2. (如果您想使所有当前箭头都变为非虚线),您可以使用组件挂钩currarrow(参见手册第 9.3.1 节),我想这就是您想要的:

\documentclass[margin=3mm]{standalone}
\usepackage[american,siunitx,RPvoltages]{circuitikz}
\makeatletter
    \newcommand{\ctikz@hook@start@draw@component@currarrow}{\pgfsetdash{}{0pt}}
\makeatother

\begin{document}

\begin{circuitikz}
    \draw (0,0) to[V={\small $V_{CC}$}] (0,2) -- (5,2)
    to[R, l={\small\textit{Charge}}, label/align=rotate] (5,0)
        -- (0,0);
    \draw[color=red, thick] (3,2) to[short, *-] (2.75,0.75)
        -- (3.25, 1.25) to[short, -*] (3,0);
    \draw[color=red, thick, dashed] (0.1,1.9) 
        to[short, i={\small $i_{\textit{défaut}}$}] (2.65,1.9)
        -- (2.65,0.1) -- (0.1,0.1) -- (0.1,1.9);
\end{circuitikz}

\end{document}

在此处输入图片描述

我还擅自将纯文本改为to线条,并以我认为更正确的方式重写标签(不要将数学模式用于斜体文本:仔细查看周围的间距F默认!)。

顺便说一句,如果您发现自己需要添加\small所有标签、电压等,您可以定义自己的样式(参见第 5.6 节):

\documentclass[margin=3mm]{standalone}
\usepackage[american,siunitx,RPvoltages]{circuitikz}
\makeatletter
    \newcommand{\ctikz@hook@start@draw@component@currarrow}{\pgfsetdash{}{0pt}}
\makeatother

\ctikzset{bipole label style/.style={font=\small}}
\ctikzset{bipole annotation style/.style={font=\small}}
\ctikzset{bipole voltage style/.style={font=\small}}
\ctikzset{bipole current style/.style={font=\small}}

\begin{document}

\begin{circuitikz}
    \draw (0,0) to[V=$V_{CC}$] (0,2) -- (5,2)
    to[R, l={\textit{Charge}}, label/align=rotate] (5,0)
        -- (0,0);
    \draw[color=red, thick] (3,2) to[short, *-] (2.75,0.75)
        -- (3.25, 1.25) to[short, -*] (3,0);
    \draw[color=red, thick, dashed] (0.1,1.9)
    to[short, i=$i_{\textit{défaut}}$] (2.65,1.9)
        -- (2.65,0.1) -- (0.1,0.1) -- (0.1,1.9);
\end{circuitikz}

\end{document}

相关内容