使用这个简单的电路
\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}