在数组环境中嵌套 tikz 图片和表格

在数组环境中嵌套 tikz 图片和表格

目前,我正在尝试为数字电子设备制作一个漂亮的逻辑门布局。我无法将环境嵌套tabular在图片中circuitikz,而且我对嵌套还不是很熟悉,所以我没有取得太大的成功。我唯一能让它工作的方法就是,如果我用节点制作表格,将方程式作为一个单一节点,而图片只是circuitikz对应逻辑门的图片。

我希望有一种系统的方法将这三者组合成某种水平数组。如果我将一个空间区域分成三个部分,我可以将方程式、表格和图片嵌套在一个数组中。我认为这相当复杂,但也许有一个简单的解决方法?

我四处查看,但没有太多涉及我所做工作的示例circuitikz。任何见解都非常感谢。我已在下面附加了以下代码。我知道这不是最好的方法,但我对 TikZ 和此类软件包非常陌生。如果您弄乱了它,您将需要包含该circuitikz软件包才能成功编译。

\begin{figure}[H]
\centering
\begin{circuitikz}
\draw (0,0) node[nor port] {};
\draw (-2,0) node[anchor=east] {{\bf {\green NOR}}};
\draw (1.5,0) node[anchor=west] {$\mathcal{O}=\overline{{\rm A}+{\rm B}}$};
\node at (6,0.5) {${\rm A}\;\;\;\;{\rm B}\;\;\;\;\mathcal{O}$};
\draw (4.95,0.2) -- (7,0.2);
\node at (6,-0.15) {0\;\;\;\;\;0\;\;\;\;\;1};
\node at (6,-0.55) {0\;\;\;\;\;1\;\;\;\;\;0};
\node at (6,-0.95) {1\;\;\;\;\;0\;\;\;\;\;0};
\node at (6,-1.35) {1\;\;\;\;\;1\;\;\;\;\;0};

\draw (0,-3) node[nand port] {};
\draw (-2,-3) node[anchor=east] {{\bf {\green NAND}}};
\draw (1.5,-3) node[anchor=west] {$\mathcal{O}=\overline{{\rm A}\cdot{\rm B}}$};
\node at (6,-2.5) {${\rm A}\;\;\;\;{\rm B}\;\;\;\;\mathcal{O}$};
\draw (4.95,-2.8) -- (7,-2.8);
\node at (6,-3.15) {0\;\;\;\;\;0\;\;\;\;\;1};
\node at (6,-3.55) {0\;\;\;\;\;1\;\;\;\;\;1};
\node at (6,-3.95) {1\;\;\;\;\;0\;\;\;\;\;1};
\node at (6,-4.35) {1\;\;\;\;\;1\;\;\;\;\;0};

\draw (0,-6) node[xor port] {};
\draw (-2,-6) node[anchor=east] {{\bf {\green XOR}}};
\draw (0.5,-6) node[anchor=west] {$\mathcal{O}=({\rm A}+{\rm B})\cdot\overline{({\rm A}\cdot {\rm B})}$};
\node at (6,-5.5) {${\rm A}\;\;\;\;{\rm B}\;\;\;\;\mathcal{O}$};
\draw (4.95,-5.8) -- (7,-5.8);
\node at (6,-6.15) {0\;\;\;\;\;0\;\;\;\;\;0};
\node at (6,-6.55) {0\;\;\;\;\;1\;\;\;\;\;1};
\node at (6,-6.95) {1\;\;\;\;\;0\;\;\;\;\;1};
\node at (6,-7.35) {1\;\;\;\;\;1\;\;\;\;\;0};
\end{circuitikz}
\end{figure}

编辑

替代文本

答案1

通常,从结构上来说,以相反的方向嵌套会更好;例如,circutikz在其单元格中包含 tikzpictures(或在您的情况下为环境)的大表格。

\begin{tabular}{cccc}
    \textcolor{green}{NOR}
    &
    \begin{circuitikz}[baseline=-0.7ex]
        \draw (0,0) node[nor port] {};
    \end{circuitikz}
    &
    $\mathcal{O} = \overline{A + B}$
    &
    $\begin{array}{ccc}
        A & B & \mathcal{O} \\ \hline
        0 & 0 & 1 \\
        0 & 1 & 0 \\
        1 & 0 & 0 \\
        1 & 1 & 0 \\
    \end{array}$
    \\
    etc.
\end{tabular}

然而,有时人们既需要 TikZ 的灵活性,又需要表格的结构。在这种情况下,可以使用\matrixTikZ 中的命令(请参阅 TikZ 手册(v2.10)第 17 节“矩阵和对齐”)。有关在 TikZ 矩阵内嵌套表格材料(如本例中的数组),另请参阅将表格放入矩阵内的节点中

\begin{circuitikz}
    \matrix[column sep=2em, ampersand replacement=\&] {
        \node[green] {NOR};
        \&
        \node[nor port] {};
        \&
        \node {$\mathcal{O} = \overline{A + B}$};
        \&
        \node {
            $\begin{array}{ccc}
                A & B & \mathcal{O} \\ \hline
                0 & 0 & 1 \\
                0 & 1 & 0 \\
                1 & 0 & 0 \\
                1 & 1 & 0 \\
            \end{array}$
            };
        \\
        \node {etc.}; \\
    };
\end{circuitikz}

相关内容