在同一个逻辑门处将输出与输入连接起来

在同一个逻辑门处将输出与输入连接起来

是否有一个好的方法可以将输出与同一逻辑门的输入连接起来,如下图所示?

在此处输入图片描述

我当前的“代码”如下所示:

\documentclass[11pt]{scrartcl}
\usepackage{tikz}
\usetikzlibrary{arrows, shapes.gates.logic.US, calc}

\begin{document}
\tikzstyle{branch}=[fill,shape=circle,minimum size=3pt,inner sep=0pt]
\begin{tikzpicture}[label distance=2mm, scale=1.5]
    \node (x) at (0, 1) {$x_t$};
    \node[and gate US, draw, logic gate inputs=nn] at (1, 1) (and) {};  

    \draw (x) |- (and.input 1);
    \draw (and.output) 
        -- ([xshift=0.5cm] and.output) 
        |- ([yshift=-0.5cm] and.output)
        |- (and.input 2);

    \draw (and.output) -- node[above]{$y$} (2.5, 1);
\end{tikzpicture}
\end{document}          

但这给了我以下输出(另外我不知道如何在 x 轴上移动分支哈哈)

在此处输入图片描述

一如往常,我们非常感谢任何帮助!

答案1

我不知道circuitikz但我知道 TiZ 足以画出一些线条......

\documentclass[circuitikz,border=3.14mm]{standalone} 
\usepackage{circuitikz}
\usetikzlibrary{circuits.logic.US}
\begin{document}
\begin{circuitikz}
\node[and gate US, draw, logic gate inputs=nn] at (1, 1) (and) {};  
\draw  (and.input 1) -- ++ (-0.5,0) node[left](x){$x_t$};
\draw (and.output) -- ++ (1,0) node[circle,fill,inner sep=2pt](bull){} 
 -- ++ (0.5,0);
 \draw  (and.input 2) -| ++ (-0.5,-0.5) -| (bull);
\end{circuitikz}
\end{document}

在此处输入图片描述

答案2

它或多或少与@marmot 的答案相同,但使用本机circuitikz连接器和一些垂直/水平连接:

\documentclass[circuitikz,border=3.14mm]{standalone} 
\usepackage{circuitikz}
\usetikzlibrary{circuits.logic.US}
\begin{document}
\begin{circuitikz}
\node[and gate US, draw, logic gate inputs=nn] at (1, 1) (and) {};  
\draw  (and.input 1) to[short, -o] ++ (-0.5,0) node[left](x){$x_t$};
\draw (and.output) to[short, -*]  ++ (0.5,0) coordinate(dot) to[short, -o] ++(0.5,0) node[right]{$y_t$};
\draw (dot) -- ++(0, -0.5) -| ([xshift=-0.4cm] and.input 2) -- (and.input 2);
\end{circuitikz}
\end{document}

这里的技巧是:

  1. 当您需要点/连接器时,使用to[short, -*]或变体代替;--
  2. 使用中间体coordinate()来简化绘图;
  3. 用来([xshift=...]named node)有一点喘息空间;
  4. 在适当的地方使用-|(水平绘制,然后垂直绘制--我认为,这叫做曼哈顿几何)。

在此处输入图片描述

相关内容