逻辑门电路图,简单问题

逻辑门电路图,简单问题

我是 tikz 的新手,正在尝试重现以下简单图表

在此处输入图片描述

我做了以下事情,

\usepackage{circuitikz}
\begin{tikzpicture}
    \node (p) at (0,0) {$p$};
    \node (p2) at (0,0.5) {$p$};
    \node (p3) at (2.5,0.25) {$\overline{p}$};
    \node[american nand port, draw] at ($(p) + (2.0,0.25)$) (NAND1) {};
            
    \draw (p) -- (NAND1.in 2);
    \draw (p2) -- (NAND1.in 1);
    \draw (NAND1.out 1) -- (p3);
\end{tikzpicture}

我得到以下结果 在此处输入图片描述

p 的线条不是直线,我可以从 0.52 到 -0.01 调整节点,但这似乎是一种错误的方法。我怎样才能使这些元素具有离散距离?

答案1

基本上,你不能。circuitikz组件的尺寸是基于标准尺寸构建的;你可以对其进行调整,例如,在给定距离处有 2 个输入端口(如果你不重新调整 TiZ 坐标),请参见此处:需要具有精确引脚距离的 CircuiTikz 芯片--- 您需要将它们放置在 0.5 厘米处才能得到直线的示例。

最好的解决方案是使用相对于锚点的坐标:

\documentclass[border=10pt]{standalone}
\usepackage[siunitx, RPvoltages]{circuitikz}
\begin{document}
\begin{tikzpicture}
    \node[american nand port, draw] at (0,0) (NAND1) {};

    \draw (NAND1.in 2) -- ++(-0.5,0) coordinate(p);
    \draw (NAND1.in 1) -- ++(-0.5,0) coordinate(p2);
    \draw (NAND1.out) coordinate (p3);

    \node[left] at (p) {$p$};
    \node[left] at (p2) {$p$};
    \node[right] at (p3) {$\overline{p}$};
\end{tikzpicture}
\end{document}

在此处输入图片描述

您确定不需要标准 IEEE 端口吗?如果添加, \ctikzset{logic ports=ieee}您可以选择更改引脚长度,请参阅带有 circuitikz 的简单逻辑门 - 增加 I/O 线长度

作为示例,让我们看看如何让您的示例使用绝对长度。如果您查看手册(第 119 页),您会发现端口的默认高度为 0.8 个基本单位。因此,如果我将基本单位设为 1.25 厘米,则端口高度为 1 厘米,连接间距为 0.5 厘米。

\documentclass[border=10pt]{standalone}
\usepackage[siunitx, RPvoltages]{circuitikz}
\ctikzset{bipoles/length=1.25cm}
\begin{document}
\begin{tikzpicture}
    \node (p) at (0,0) {$p$};
    \node (p2) at (0,0.5) {$p$};
    \node (p3) at (2.5,0.25) {$\overline{p}$};
    \node[american nand port, draw] at ($(p) + (2.0,0.25)$) (NAND1) {};
            
    \draw (p) -- (NAND1.in 2);
    \draw (p2) -- (NAND1.in 1);
    \draw (NAND1.out) -- (p3);
\end{tikzpicture}
\end{document}

在此处输入图片描述

但是,这个解决方案并不是最佳的。舍入误差很容易产生问题(尤其是对于 PDF 查看器的抗锯齿程序而言……)

相关内容