如何使用触发器上的复位连接?

如何使用触发器上的复位连接?

我很高兴使用 Circuitikz 来绘制我的人字拖。但是,我在连接人字拖底部的低电平有效气泡时遇到了麻烦。

据我所知,人字拖的底部有两个锚点:down 和 bdown。它们都不在气泡底部,而气泡底部正是您自然想要连接的地方。我想出了一个丑陋的破解方法,但一定有一个“正确”的方法。

以下是 MWE:

\documentclass[tikz]{standalone}
\usepackage{tikz}
\usepackage[RPvoltages]{circuitikz}
\tikzset{flipflop DQ/.style={flipflop, scale=.7,
         flipflop def={t1=D, t6=Q, c3=1,
         clock wedge size=.3, font=\normalsize}
}}
\tikzset{flipflop DQBR/.style={flipflop, scale=.7, % Has D, Q, QBar and Reset
         flipflop def={t1=D, t6=Q, c3=1, t4=\ctikztextnot{Q}, n4=1, nd=1,
         clock wedge size=.3, font=\normalsize},
}}
\tikzset{flipflop DQBP/.style={flipflop, scale=.7, % Has D, Q, QBar and Preset
         flipflop def={t1=D, t6=Q, c3=1, t4=\ctikztextnot{Q}, n4=1, nu=1,
         clock wedge size=.3, font=\normalsize}
}}
\begin{document}


\begin{circuitikz}
  %\draw[help lines] (-10,-3) grid (5,10);
  \node[flipflop DQBR] (ff0) at (0,3) {};
  \node[flipflop DQBR] (ff1) at (3,3) {};
  \node[flipflop DQBR] (ff2) at (6,3) {};
  \node[flipflop DQBP] (ff3) at (0,0) {};
  \node[flipflop DQ]   (ff4) at (3,0) {};
  \node[flipflop DQ]   (ff5) at (6,0) {};
  
  \draw (ff0.bdown) -- (ff3.up);  % Line overwrites bubble
  \draw (ff1.down) -- (ff4.up);
  \draw (ff2-Nd.south) -- (ff5.bup);  % Ugly-ness to get line not to 
     %draw over top of the bubble.
  
\end{circuitikz}

\end{document}

结果如下: 三种触发器连接方法 请注意,左侧连接覆盖了气泡,中间连接未连接,只有右侧连接连接良好。与左下方的触发器形成对比,其中连接到上锚点的线与气泡完全相交。

答案1

首先 --- 我认为你发现了一个错误。我会尽快调查。但这个错误可能不是你想的那样 --- 你不应该在 DQBP 上有底部引脚,而应该在 DQBR 触发器上有复位引脚。

(附注---我建议你使用Q而不是球,或者 \ctikztextnot{Q}没有非球。人们会认为那里有一个双重否定。

其次,你找到的与球连接的解决方案是正确的,而不是一个丑陋的黑客——手册中有解释(第 130 页底部),当你有 0 长度的外部引脚时--- 就您而言,由于这个错误,您遇到了同样的情况。

理论上,当您说nd=1(或nu=1) 有否定球时,外部引脚也会被绘制。绘制外部引脚时,引脚/球重叠会被考虑在形状中。

您真正想要的是拥有引脚,这样第一行和第二行就可以自然工作。作为一种解决方法,为 DQBR 和 DQBP 的引脚添加一个空白标签。

DQ 没有上引脚或下引脚,因此您必须使用边框锚点。

\documentclass[border=4pt]{standalone}
\usepackage{tikz}
\usepackage[RPvoltages]{circuitikz}
\tikzset{flipflop DQ/.style={flipflop, scale=.7,
         flipflop def={t1=D, t6=Q, c3=1,
         clock wedge size=.3, font=\normalsize}
}}
\tikzset{flipflop DQBR/.style={flipflop, scale=.7, % Has D, Q, QBar and Reset
         flipflop def={t1=D, t6=Q, c3=1, t4=\ctikztextnot{Q}, n4=1, nd=1, td=~,
         clock wedge size=.3, font=\normalsize},
}}
\tikzset{flipflop DQBP/.style={flipflop, scale=.7, % Has D, Q, QBar and Preset
         flipflop def={t1=D, t6=Q, c3=1, t4=\ctikztextnot{Q}, n4=1, nu=1, tu=~,
         clock wedge size=.3, font=\normalsize}
}}
\begin{document}


\begin{circuitikz}
  \node[flipflop DQBR] (ff0) at (0,3) {0};
  \node[flipflop DQBR] (ff1) at (3,3) {1};
  \node[flipflop DQBR] (ff2) at (6,3) {2};
  \node[flipflop DQBP] (ff3) at (0,0) {3};
  \node[flipflop DQ]   (ff4) at (3,0) {4};
  \node[flipflop DQ]   (ff5) at (6,0) {5};

  \draw (ff0.down) -- (ff3.up);
  \draw (ff1.down) -- (ff4.bup);
  \draw (ff2.down) -- (ff5.bup);

\end{circuitikz}

\end{document}

在此处输入图片描述


局部放电错误只是一个愚蠢的打字错误(我可以这么说,因为它是我写的!)

diff --git a/tex/pgfcircmultipoles.tex b/tex/pgfcircmultipoles.tex
index 3454f6d..82b156c 100644
--- a/tex/pgfcircmultipoles.tex
+++ b/tex/pgfcircmultipoles.tex
@@ -1406,7 +1406,7 @@
                 \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
                 \edef\@@tmp{\ctikzvalof{multipoles/flipflop/cd}}
                 \ifnum\@@tmp>0\edef\@@or{1}\fi
-                \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nu}}
+                \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nd}}
                 \ifnum\@@tmp>0\edef\@@or{1}\fi
                 % \typeout{TEST\space\@@tmp\space\@@x}
                 \ifnum\@@or>0

使用补丁程序(它将在 v1.3.2 中修复),您的原始代码(用红色表示连接以更好地显示它们)几乎可以开箱即用:

\documentclass[border=4pt]{standalone}
\usepackage{tikz}
\usepackage[RPvoltages]{circuitikz}
\tikzset{flipflop DQ/.style={flipflop, scale=.7,
         flipflop def={t1=D, t6=Q, c3=1,
         clock wedge size=.3, font=\normalsize}
}}
\tikzset{flipflop DQBR/.style={flipflop, scale=.7, % Has D, Q, QBar and Reset
         flipflop def={t1=D, t6=Q, c3=1, t4=\ctikztextnot{Q}, n4=1, nd=1,
         clock wedge size=.3, font=\normalsize},
}}
\tikzset{flipflop DQBP/.style={flipflop, scale=.7, % Has D, Q, QBar and Preset
         flipflop def={t1=D, t6=Q, c3=1, t4=\ctikztextnot{Q}, n4=1, nu=1,
         clock wedge size=.3, font=\normalsize}
}}
\begin{document}


\begin{circuitikz}
  \node[flipflop DQBR] (ff0) at (0,3) {0};
  \node[flipflop DQBR] (ff1) at (3,3) {1};
  \node[flipflop DQBR] (ff2) at (6,3) {2};
  \node[flipflop DQBP] (ff3) at (0,0) {3};
  \node[flipflop DQ]   (ff4) at (3,0) {4};
  \node[flipflop DQ]   (ff5) at (6,0) {5};

  \draw[red] (ff0.down) -- (ff3.up);
  \draw[red] (ff1.down) -- (ff4.bup);
  \draw[red] (ff2.down) -- (ff5.bup);

\end{circuitikz}
\end{document}

在此处输入图片描述

抱歉,抗锯齿效果太差,怪okular

相关内容