我必须绘制一个图表,并希望将其放在一页纸上,因此我没有太多空间。因此,我必须“堆叠”一些门,但是如果我可以将逻辑门的输出放在左侧,将输入放在右侧,那将大有裨益。有没有办法翻转节点形状(标签&
仍然需要以正确的方式读取)?
问题草图(左边是我想要的,右边是暂时的替代方案):
(我没有花太多时间在简化的涂鸦上,但我认为它说明了问题,如何获得上部和大门)
编辑:就我而言,a3 input and
就可以了,但我对解决方案而不是“变通方法”感到好奇。
平均能量损失:只是一个and
门。问题是,我如何旋转输入和输出端(锚点的顺序input n
可以颠倒)
\documentclass[12pt]{article}
\usepackage[english]{babel}
\usepackage[utf8x]{inputenc}
\usepackage{tikz}
\usetikzlibrary{circuits}
\usetikzlibrary{circuits.logic}
\usetikzlibrary{circuits.logic.IEC}
\begin{document}
\begin{tikzpicture} [circuit logic IEC,
every circuit symbol/.style={
logic gate IEC symbol color=black,
fill=blue!20,draw=blue,very thick}]
\node (and)[and gate]{};
\draw (and.output) -- ++ (1,0);
\draw (and.input 1) -- ++ (-1,0);
\draw (and.input 2) -- ++ (-1,0);
\end{tikzpicture}
\end{document}
答案1
好吧,这就是解决方案的想法。由于label
选项只是一个包装器,append after command
我们可以使用\tikzlastnode
并提取适当的尺寸并&
适当地放置(或使用的任何符号)。
代码
\documentclass[12pt,tikz,convert=false]{standalone}
\usepackage{tikz}
\usepackage{etoolbox}
\usetikzlibrary{circuits.logic.IEC}
% from: http://tex.stackexchange.com/a/106796/16595
\makeatletter
%\tikzset{anchor/.append code=\let\tikz@auto@anchor\relax}
\tikzset{inside/.code=\preto\tikz@auto@anchor{\pgf@x-\pgf@x\pgf@y-\pgf@y}}
\tikzset{
point left/.append style={
label/.expanded={[inside, very thick, inner sep=2\pgflinewidth]south:\pgfkeysvalueof{/pgf/and gate IEC symbol}},
and gate IEC symbol=,
}
}
\makeatother
\begin{document}
\begin{tikzpicture}[
circuit logic IEC,
every circuit symbol/.style={
logic gate IEC symbol color=black,
fill=blue!20,
draw=blue,
very thick
}
]
\node[and gate, point left] (and)[]{};
\draw (and.output) -- ++ (-1,0);
\draw (and.input 1) -- ++ (1,0);
\draw (and.input 2) -- ++ (1,0);
\end{tikzpicture}
\end{document}