是否有一个好的方法可以将输出与同一逻辑门的输入连接起来,如下图所示?
我当前的“代码”如下所示:
\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
但我知道 Ti钾Z 足以画出一些线条......
\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}
这里的技巧是:
- 当您需要点/连接器时,使用
to[short, -*]
或变体代替;--
- 使用中间体
coordinate()
来简化绘图; - 用来
([xshift=...]named node)
有一点喘息空间; - 在适当的地方使用
-|
(水平绘制,然后垂直绘制--我认为,这叫做曼哈顿几何)。