答案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 实现中的一个错误......(或者存在一些不明显的原因)。