我是 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 个输入端口(如果你不重新调整 Ti钾Z 坐标),请参见此处:需要具有精确引脚距离的 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 查看器的抗锯齿程序而言……)