帶倒泡的電路緩衝器輸入

帶倒泡的電路緩衝器輸入

相關問題Circuitikz 逆變器氣泡展示如何反轉與門上的輸入。我怎麼能在緩衝門上做到這一點? (朝右的三角形)我似乎找不到文檔。我嘗試使用node[buffer, inputs=i]但它似乎無法識別inputs密鑰。


更新:看起來我可以在 a 中執行此操作,tikzpicture但不能在circuitikz元素內執行此操作。以下內容有效,但我需要將其組合並連接到元素中的某些內容circuitikz

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{circuits.logic.US} 

\begin{document}
\begin{tikzpicture}[circuit logic US]
\node (a) [buffer gate, inputs=i] {};
\end{tikzpicture}%
\end{document}

在此輸入影像描述

有沒有辦法在 Circuitikz 繪圖中使用它?

答案1

一個可能的解決方案是定義一個名為\buffergatevia\newcommand語法的緩衝區門,它接受兩個參數#1=name#2= rotation angle。建議的解決方案重新定義not port\buffergate,以便緩衝門可以在circuitiz圖形內部使用。借用了一個範例circuitikz,並提出了以下建議。

\newcommand{\buffergate}[2] 
{  % #1 = name , #2 = rotation angle
\begin{scope}[transform shape,rotate=#2]
\draw[thick] (#1) ++(-16pt,0) coordinate[ocirc,xshift=-2pt](#1in) -- ++(0,16pt) -- ++
(30pt,-16pt)coordinate(a) -- ++(-30pt,-16pt) -- cycle;
\draw (a) --++(6pt,0)coordinate(#1out);
\end{scope}
}

背後的邏輯是調用not port,將其著色為白色,給它一個標籤名稱,使用命令\bufergate,如下所示。

\draw (1,0) node[not port,color=white,name=not1] () {};
\buffergate{not1}{0}  % 0 = horizontal 

在此輸入影像描述

程式碼

\documentclass[border=10pt,varwidth]{standalone}  
\usepackage{tikz}
\usepackage[american,siunitx]{circuitikz}
\usetikzlibrary{calc,positioning}

\newcommand{\buffergate}[2] 
{  % #1 = name , #2 = rotation angle
\begin{scope}[transform shape,rotate=#2]
\draw[thick] (#1) ++(-16pt,0) coordinate[ocirc,xshift=-2pt](#1in) -- ++(0,16pt) -- ++(30pt,-16pt)coordinate(a) -- ++(-30pt,-16pt) -- cycle;
\draw (a) --++(6pt,0)coordinate(#1out);
\end{scope}
}

\begin{document}  

An example from circuitikz 

\begin{circuitikz} 
\draw
(1,0) node[not port] (not1) {}
(3,0) node[not port] (not2) {}
(0,0) -- (not1.in)
(not2.in) -- (not1.out)
++(0,-1) node[ground] {} to [C] (not1.out)
(not2.out) -| (4,1) -| (0,0);
\end{circuitikz}


\medskip

Proposed solution 1 -- node 

\medskip

\begin{circuitikz} 
\draw
(1,0) node[not port,color=white,name=not1] () {};
\buffergate{not1}{0}
\draw (3,0) node[not port,color=white,name=not2] () {};
\buffergate{not2}{-90}
\draw (0,0) -- (not1.in);
\draw(1.7,-1) node[ground] {} to [C] (not1out)
(not2out) -| (4,1) -| (0,0);
\draw (not1out) --++(0.5,0)|- (not2in);
\end{circuitikz}



\medskip

Proposed solution 2 -- path

\medskip

\begin{circuitikz} 
\path(0.5,0) to[not port,color=white,name=not1] (1.5,0);
\buffergate{not1}{0}
\path(2.5,0) to[not port,color=white,name=not2] (3.5,0);
\buffergate{not2}{90}
\draw (0,0) -- (not1in);
\draw (1.7,-1) node[ground] {} to [C] (not1out)
(not2out) -| (4,1) -| (0,0);
\draw (not1out) --++(0.5,0)|- (not2in);
\end{circuitikz}

\end{document}

相關內容