Circuitikz:如果 xscale=-1,则电阻绘制不正确

Circuitikz:如果 xscale=-1,则电阻绘制不正确

使用这个简单的电路

\documentclass{article}

\usepackage{circuitikz}

\begin{document}
\begin{circuitikz}[xscale=-1]
% this xscale must be specified also in the opamp

\draw
(0,0) to [R,l^=$R_1$,-*] (3,0)
;

\end{circuitikz}
\end{document}

电阻上画有一条水平线。如果我删除该xscale=-1选项,它就会被正确绘制。

这是一个错误吗?可以修复吗?

答案1

不一定很好,但不是错误:只是circuitikz工作方式。通常xscale=-1不全局使用,而仅用于需要它的组件(例如定位运算放大器和晶体管)。

如果您确实需要全局设置xscale=-1,则可以通过再次应用相同的缩放比例来为各个组件恢复它。请注意,如果您将此键放在组件键之后,则必须/tikz/xscale在此处提供完整的键路径以转义circuitikz键命名空间:

\documentclass{standalone}

\usepackage{circuitikz}

\begin{document}
\begin{circuitikz}[xscale=-1]
% this xscale must be specified also in the opamp

\draw
(0,1) to [xscale=-1,R,l=$R_1$,-*] (3,1)
% or
(0,0) to [R,/tikz/xscale=-1,l^=$R_1$,-*] (3,0)
;

\end{circuitikz}
\end{document}

在此处输入图片描述

编辑:啊哈!现在,你清楚自己实际上在做什么了。:-)

显示电路“镜像”版本的另一种方法是使用x=-1cm(或全局设置的反面x——默认值为x=1cm)。这允许您使用相同的代码来显示镜像电路,而无需添加额外的xscale在任何地方添加额外的键。

但是,这会影响标签位置,因为您正在更改组件的绘制方向,并且标签位置是相对于此方向的。您需要^交换_反之亦然。沿非镜像轴(此处为 y 轴)绘制的组件的标签不受影响,不需要更改。

因此,根据您的电路以及您对标签位置的挑剔程度,这种方法可能会或可能不会导致比第一种方法更少的代码更改:

\documentclass{standalone}
\usepackage[american,siunitx]{circuitikz}

\begin{document}
\begin{circuitikz} 
\begin{scope}
  \draw (0,0)
  to[V=1<\volt>] ++(0,2)
  to[R=$R_1$,-*] ++(2,0)
;\end{scope}
\begin{scope}[shift={(5,0)},x=-1cm] % add x=-1cm here and shift to move the mirrored version
  \draw (0,0)
  to[V=1<\volt>] ++(0,2)
  to[R,l_=$R_1$,-*] ++(2,0) % swap label position here; otherwise identical code within the scopes
;\end{scope}
\end{circuitikz}
\end{document}

在此处输入图片描述

相关内容