我有 LaTeX 程式碼,使用CircuitTikZ
用於繪製簡單邏輯電路的包,但我不相信我的程式碼是完成我想做的事情的正確方法。本質上,我有兩個輸入,每個輸入都需要進入兩個門。程式碼如下所示:
\begin{circuitikz} \draw
(2,1) node[or port] (myor) {}
(2,-1) node[nand port] (mynand) {}
(4,0) node[and port] (myand) {}
(myor.out) -| (myand.in 1)
(mynand.out) -| (myand.in 2)
(0,1) |- (myor.in 1)
(0,1) |- (mynand.in 1)
(-1,0) to[short, -*] (0,0)
(0,-1) -| (myor.in 2)
(0,-1) -| (mynand.in 2)
(-1,-1) to[short, -*] (0.62,-1)
;\end{circuitikz}
輸出:
輸出看起來正確,但我對繪製到的最後一行感覺不太好(0.62,-1)
。有沒有更乾淨的方法來做到這一點?
答案1
是的,你的電路沒問題。繪製最終線條的另一種選擇是沿路徑放置座標,然後使用此座標:
\documentclass{article}
\usepackage{circuitikz}
\begin{document}
\begin{circuitikz} \draw
(2,1) node[or port] (myor) {}
(2,-1) node[nand port] (mynand) {}
(4,0) node[and port] (myand) {}
(myor.out) -| (myand.in 1)
(mynand.out) -| (myand.in 2)
(myor.in 1) -- ++(-0.5,0) |- (mynand.in 1) coordinate[pos=0.33] (a)
(a) to[short, *-] (-1,0|-a)
(myor.in 2) |- (mynand.in 2) coordinate[pos=0.43] (b)
(b) to[short, *-] (-1,0|-b)
;\end{circuitikz}
\end{document}
請注意,例如,
(0,1) |- (myor.in 1)
(0,1) |- (mynand.in 1)
(-1,0) to[short, -*] (0,0)
被替換為
(myor.in 1) -- ++(-0.5,0) |- (mynand.in 1) coordinate[pos=0.33] (a)
(a) to[short, *-] (-1,0|-a)
和
(0,-1) -| (myor.in 2)
(0,-1) -| (mynand.in 2)
(-1,-1) to[short, -*] (0.62,-1)
被替換為
(myor.in 2) |- (mynand.in 2) coordinate[pos=0.43] (b)
(b) to[short, *-] (-1,0|-b)
在這兩種情況下,我都使用了垂直座標系,其中,例如(-1,0|-b)
表示 的 x 座標(-1,0)
和 的 y 座標(b)
。