entrada de buffer de circuito con burbuja invertida

entrada de buffer de circuito con burbuja invertida

La pregunta relacionadaBurbuja inversor Circuitikzmuestra cómo invertir una entrada en una puerta AND. ¿Cómo puedo hacer esto en una puerta de amortiguamiento? (triángulo orientado hacia la derecha) Parece que no puedo encontrar la documentación. Intenté usar node[buffer, inputs=i]pero no parece reconocer la inputsclave.


Actualización: Parece que puedo hacerlo en un elemento tikzpicture, pero no dentro de circuitikzél. Lo siguiente funciona, pero necesito combinarlo y conectarme a algunas cosas en un circuitikzelemento:

\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}

ingrese la descripción de la imagen aquí

¿Hay alguna manera de usar esto dentro de un dibujo de Circuitikz?

Respuesta1

Una posible solución es definir una puerta de búfer llamada \buffergatemediante \newcommanduna sintaxis que tome dos argumentos #1=namey #2= rotation angle. Las soluciones propuestas se redefinen not porten \buffergate, de modo que la puerta de amortiguamiento se pueda utilizar dentro de un circuitizdibujo. Se toma prestado un ejemplo de circuitikzy siguen las propuestas.

\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}
}

La lógica detrás es llamar not port, colorearlo de blanco, darle un nombre de etiqueta y usar el comando \bufergate, como se muestra a continuación.

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

ingrese la descripción de la imagen aquí

Código

\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}

información relacionada