蒂克兹

蒂克兹

我正在寻找 tikz 中逻辑门的乳胶实现。

更具体地说,我想创建一个具有两个以上分支的欧式异或门。由于已经存在具有两个以上分支的或门(并且或门和异或门之间的唯一区别是等号与大等号,见图),因此从或门的代码创建多分支异或应该非常容易。

但是,tikz代码非常大,我无法找到OR的实现。

在此处输入图片描述

答案1

蒂克兹

不完全确定您指的是哪个库,但一般程序适用。

如果有,则这将加载在(我的系统中)找到的\usetikzlibrary{shapes.gates.logic.IEC}文件。您可以在终端中运行来找到该位置。tikzlibraryshapes.gates.logic.IEC.code.tex/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/kpsewhich tikzlibraryshapes.gates.logic.IEC.code.tex

此文件设置了一些样式,并加载pgflibraryshapes.gates.logic.IEC.code.tex(位于文件夹中.../texmf-dist/tex/generic/pgf/libraries/shapes/circuits/),这是门的实际代码所在。or gate IEC从第 343 行开始定义。

circuitikz

假设您实际上谈论的是circuitikz,而不是tikz

据我所知,虽然我对 不是很熟悉circuitkz,但 的定义european xor gate(如 runartrollet 的答案所示)可以在文件 中找到pgfcirctripoles.tex。如上所述,您可以使用 找到它的位置kpsewhich pgfcirctripoles.tex,我把它放在 中/usr/local/texlive/2015/texmf-dist/tex/generic/circuitikz/pgfcirctripoles.tex

不同类型的门由一个名为的宏创建\pgfcircdeclareeurologicport,该宏定义在上述文件的第 892-1022 行。(请参阅宏定义正下方的行。)

答案2

这可能不是最好的方法,因为它实际上并没有添加任何端口,但它看起来是这样的。你可能想要一个比这更好的解决方案,但在紧急情况下,这可能是你想要的。这使用circuitikz包裹。

\documentclass[11pt]{article}
\usepackage[european]{circuitikz}
\begin{document}
\begin{circuitikz} \draw
(0,2) node[european or port] (OR1) {} 
(0,0) node[european xor port] (XOR1) {}
(XOR1.west) -- ++(0.4,0)
(OR1.west) -- ++(0.4,0)
;\end{circuitikz}

\end{document}

在此处输入图片描述

这是基于 John Kormylo 的回答tikz 的三(或更多腿)异或门

编辑:我读过你的其他一些帖子,你似乎很清楚circuitikz,我意识到我的回答可能没有帮助,而且它并没有真正帮助你找到逻辑门的源代码。也许你可以添加一些关于为什么需要这种方法的信息?

答案3

根据 Torbjørn T. 的回答,我检查了这个文件:

pgflibraryshapes.gates.logic.IEC.code.tex

我发现 XOR 门与其他支持三条或更多条腿的门之间的基本区别是这一行:

\pgf@lib@sh@logicgate@parseinputs{1024}

对于 XOR 门,常数设置为 2(而不是 1024)。我将其设置为 1024,并且工作正常。

我猜这是 tikz 实现中的一个错误......(或者存在一些不明显的原因)。

相关内容