Tikz:改变相对于文本的形状大小

Tikz:改变相对于文本的形状大小

所以我想画一个受控非门:

\begin{circuitikz}[scale=.3,thick] \draw
(2,0) node[adder] (xor) {}
(0,2) node (x) {$x$}
(0,0) node (y) {$y$}
(4,2) node (xout) {}
(4,0) node (yout) {}
(2,2) node[inner sep=0pt,minimum size=3,circle,fill=red] (cxor) {}
(x.east) -- (xout.west)
(y.east) -- (xor.west)
(xor.east) -- (yout.west)
(xor.north) -- (cxor)
;
\end{circuitikz}

问题是,门太大了,而且很丑。我可以使用来减小门的大小,every node/.style={transform shape}但这也会减小文本的大小。所以我可以选择(可读文本 + 丑陋的大形状)或(小文本 + 正确的形状)。

为了缩小形状同时保持文本可读,我只能添加transform shape到形状节点 - 这似乎有效,但是 1)有没有办法将其放在选项中circuitikz?2)这也会弄乱在形状节点内输入的任何文本,对吗?

丑陋的图表

答案1

所有 Circuitikz 组件均基于双极子/长度,也称为\pgf@circ@Rlen。组件尺寸是应用于此基本距离的比例因子。显然,这种做法始于双极子,并扩展到三极子、单极子和其他组件。

演示

\documentclass{standalone}
\usepackage{circuitikz}
\begin{document}
\ctikzset{bipoles/length=.5cm}
\begin{circuitikz}[scale=.3,thick] \draw
(2,0) node[adder] (xor) {}
(0,2) node (x) {$x$}
(0,0) node (y) {$y$}
(4,2) node (xout) {}
(4,0) node (yout) {}
(2,2) node[inner sep=0pt,minimum size=3,circle,fill=red] (cxor) {}
(x.east) -- (xout.west)
(y.east) -- (xor.west)
(xor.east) -- (yout.west)
(xor.north) -- (cxor)
;
\end{circuitikz}
\end{document}

答案2

  • 在图像的绘制中circuitikz合理使用一种绘图方式,正如circuitikz包所假设的那样
  • 缩放ciruitikz图片不是一个好主意,最好从一开始就以较小的尺寸绘制。
  • 例如,假设您想将图像尺寸缩小一半(通过 scale=0.5 获得),则无需缩放的等效图像代码是:

\documentclass[margin=3mm]{standalone}
\usepackage{circuitikz}

\begin{document}
\begin{circuitikz}% used default thick of lines
\ctikzset{bipoles/length=5mm}% reduced size of bipoles
\draw   (1,0)    node[adder] (xor) {}
\draw   ( 0.5,0) node[adder] (xor) {}
        ( 0,0)   node[left]  {$y$} -- (xor.west)
        (xor.east) -- (1,0)
        ( 0,1)   node[left]  {$x$} to [short] (1,1)
        (.5,1)   to [short,color=red,*-]  (xor.north);
\end{circuitikz}
\end{document}

在此处输入图片描述

附录:scale如果由于某种原因你必须在图像中 使用选项,那么你还必须缩放节点adder

\documentclass[margin=3mm]{standalone}
\usepackage{circuitikz}

\begin{document}
\begin{circuitikz}[scale=0.3]
\draw   (1,0) node[scale=0.3,adder] (xor) {}% observe "scale" option in node
        (0,0)   node[left]  {$y$} -- (xor.west)
        (xor.east) -- (2,0)
        (0,2)   node[left]  {$x$} to [short] (2,2)
        (1,2)   to [short,color=red,*-]  (xor.north);
\end{circuitikz}
\end{document}

在此处输入图片描述

相关内容