有人知道如何同时旋转示波器和信号方波吗?
这是我目前所拥有的:
可以看到,信号并没有随着示波器旋转,这是我写的:
\documentclass[a4paper,12pt]{article}
\usepackage[a4paper, margin=2cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[]{circuitikzgit}
\begin{document}
\begin{center}
\begin{circuitikz}[rotate=45, transform shape]
\draw (0,0)node[oscopeshape](osc1){OC 1};
\end{circuitikz}
\end{center}
\end{document}
我曾经尝试使用\scope
并从节点线旋转,但结果是一样的,我认为这是一个错误。
另外,我使用了最新版本的 CircuiTikz,这是你可以得到它的地方。
答案1
众所周知,必须transform canvas
非常小心地使用,John Kormylo 提醒我们它的一些副作用。这也完全没有必要。这里有一个始终有效的技巧:使用\savebox
。
\documentclass[a4paper,12pt]{article}
\usepackage[a4paper, margin=2cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[]{circuitikzgit}
\newsavebox\oscopeshape
\sbox\oscopeshape{\tikz{\node[oscopeshape]{};}}
\begin{document}
\begin{center}
\begin{circuitikz}[rotate=45, transform shape]
\draw (0,0)node[label=above:OC 1](osc1){\usebox\oscopeshape};
\end{circuitikz}
\end{center}
\end{document}
PS“总是”是指观看者不做的事情。shadings
和patterns
是无法用此技巧进行转换的例子。
答案2
我怀疑这不是一个 bug,它更像是遗漏了(不寻常的)功能需求(到目前为止,我还没有看到带有旋转仪器的电气/电子方案)。如果您喜欢旋转 ti,您应该旋转画布:
\documentclass[a4paper,12pt]{article}
\usepackage[a4paper, margin=2cm]{geometry}
\usepackage[]{circuitikz}
\begin{document}
\begin{center}
\begin{circuitikz}
\begin{scope}[]
\draw (0,0)node[oscopeshape,transform canvas={rotate=45}](osc1){OC 1};
\end{scope}
\end{circuitikz}
\end{center}
\end{document}
然而,这可能会给整体方案设计带来意想不到的问题……
答案3
这不是答案,只是显示了画布变换的奇怪效果。
\documentclass{standalone}
\usepackage[]{circuitikz}
\begin{document}
\begin{circuitikz}
\path (0,1);% for bounding box
\begin{scope}[transform canvas={rotate=45}]
\draw (0,0) node[oscopeshape](osc1){OC 1};
\draw (osc1.in 1) -- ++(0,-1);
\draw (osc1.in 2) -- ++(0,-1);
\draw (osc1.left) -- ++(-1,0);
\draw (osc1.right) -- ++(1,0);
\end{scope}
\draw[red] (osc1.in 1) -- ++(0,-1);
\draw[red] (osc1.in 2) -- ++(0,-1);
\draw[red] (osc1.left) -- ++(-1,0);
\draw[red] (osc1.right) -- ++(1,0);
\end{circuitikz}
\end{document}
唉,[记住图片] 也不能处理旋转。
\documentclass{standalone}
\usepackage[]{circuitikz}
\newsavebox\oscopeshape
\sbox\oscopeshape{\tikz[remember picture,overlay]{\node[oscopeshape](osc1){OC 1};}}
\begin{document}
\begin{circuitikz}[remember picture]
\path (0,1);% for bounding box
\draw (0,0)node[rotate=45]{\usebox\oscopeshape};
\draw[red] (0,0) -- (osc1.center);
\draw (osc1.in 1) -- ++(0,-1);
\draw (osc1.in 2) -- ++(0,-1);
\draw (osc1.left) -- ++(-1,0);
\draw (osc1.right) -- ++(1,0);
\end{circuitikz}
\end{document}
答案4
这很简单,你只是想让旋转的元素整体旋转,就像我的情况一样,呵呵。
只需使用该包\rotating
并将您的 CircuiTikz 作为图形包含在其中,仅此而已。