数学节点矩阵中未定义的节点

数学节点矩阵中未定义的节点

我在 2008 年做了这个例子,它编译了(texample.net)。

我尝试重新编译代码,但没有成功,而且找不到错误。

现在有些节点未定义。我注释了有问题的行

\documentclass[]{article}
\usepackage{tikz}
\usetikzlibrary{matrix,arrows,decorations.pathmorphing}

\begin{document}

% l' unite
\newcommand{\myunit}{1 cm}
\tikzset{
    node style sp/.style={draw,circle,minimum size=\myunit},
    node style ge/.style={circle,minimum size=\myunit},
    arrow style mul/.style={draw,sloped,midway,fill=white},
    arrow style plus/.style={midway,sloped,fill=white},
}

\begin{tikzpicture}[>=latex]
% les matrices
\matrix (A) [matrix of math nodes,%
             nodes = {node style ge},%
             left delimiter  = (,%
             right delimiter = )] at (0,0)
{%
  a_{11} & a_{12} & \ldots & a_{1p}  \\
  \node[node style sp] {a_{21}};%
         & \node[node style sp] {a_{22}};%
                  & \ldots%
                           & \node[node style sp] {a_{2p}}; \\
  \vdots & \vdots & \ddots & \vdots  \\
  a_{n1} & a_{n2} & \ldots & a_{np}  \\
};
\node [draw,below=10pt] at (A.south) 
    { $A$ : \textcolor{red}{$n$ rows} $p$ columns};

\matrix (B) [matrix of math nodes,%
             nodes = {node style ge},%
             left delimiter  = (,%
             right delimiter =)] at (6*\myunit,6*\myunit)
{%
  b_{11} & \node[node style sp] {b_{12}};%
                  & \ldots & b_{1q}  \\
  b_{21} & \node[node style sp] {b_{22}};%
                  & \ldots & b_{2q}  \\
  \vdots & \vdots & \ddots & \vdots  \\
  b_{p1} & \node[node style sp] {b_{p2}};%
                  & \ldots & b_{pq}  \\
};
\node [draw,above=10pt] at (B.north) 
    { $B$ : $p$ rows \textcolor{red}{$q$ columns}};
% matrice résultat
\matrix (C) [matrix of math nodes,%
             nodes = {node style ge},%
             left delimiter  = (,%
             right delimiter = )] at (6*\myunit,0)
{%
  c_{11} & c_{12} & \ldots & c_{1q} \\
  c_{21} & \node[node style sp,red] {c_{22}};%
                  & \ldots & c_{2q} \\
  \vdots & \vdots & \ddots & \vdots \\
  c_{n1} & c_{n2} & \ldots & c_{nq} \\
};
% les fleches
% \draw[blue] (A-2-1.north) -- (C-2-2.north);
% \draw[blue] (A-2-1.south) -- (C-2-2.south);
% \draw[blue] (B-1-2.west)  -- (C-2-2.west);
% \draw[blue] (B-1-2.east)  -- (C-2-2.east);
% \draw[<->,red](A-2-1) to[in=180,out=90]
%   node[arrow style mul] (x) {$a_{21}\times b_{12}$} (B-1-2);
% \draw[<->,red](A-2-2) to[in=180,out=90]
%   node[arrow style mul] (y) {$a_{22}\times b_{22}$} (B-2-2);
% \draw[<->,red](A-2-4) to[in=180,out=90]
%   node[arrow style mul] (z) {$a_{2p}\times b_{p2}$} (B-4-2);
% \draw[red,->] (x) to node[arrow style plus] {$+$} (y)%
%                   to node[arrow style plus] {$+\raisebox{.5ex}{\ldots}+$} (z)%
%                   to (C-2-2.north west);

\node [draw,below=10pt] at (C.south) 
    {$ C=A\times B$ : \textcolor{red}{$n$ rows}  \textcolor{red}{$q$ columns}};

\end{tikzpicture}

\end{document}

现在我明白了

在此处输入图片描述

第一行注释掉

Latex Error: ./matrix-multiplication.tex:66 Package pgf Error: No shape named `A-2-1' is known.

Latex Error: ./matrix-multiplication.tex:66 Package pgf Error: No shape named `C-2-2' is known.

在2008

在此处输入图片描述

答案1

我不确定是否真的支持将\node命令放在 或 中matrix of nodesmatrix of math nodes无论如何,您似乎使用它来赋予节点样式。有一种更简单的方法。而不是

\node[node style sp] {a_{22}};

说啊

|[node style sp]|  a_{22}

这是当前手册(v3.1.5)中记录的方法,并且有效。

\documentclass[]{article}
\usepackage{tikz}
\usetikzlibrary{matrix,arrows,decorations.pathmorphing}

\begin{document}

% l' unite
\newcommand{\myunit}{1 cm}
\tikzset{
    node style sp/.style={draw,circle,minimum size=\myunit},
    node style ge/.style={circle,minimum size=\myunit},
    arrow style mul/.style={draw,sloped,midway,fill=white},
    arrow style plus/.style={midway,sloped,fill=white},
}

\begin{tikzpicture}[>=latex]
% les matrices
\matrix (A) [matrix of math nodes,%
             nodes = {node style ge},%
             left delimiter  = (,%
             right delimiter = )] at (0,0)
{%
  a_{11} & a_{12} & \ldots & a_{1p}  \\
  |[node style sp]| a_{21}%
         & |[node style sp]| a_{22}%
                  & \ldots%
                           & |[node style sp]| a_{2p} \\
  \vdots & \vdots & \ddots & \vdots  \\
  a_{n1} & a_{n2} & \ldots & a_{np}  \\
};
\node [draw,below=10pt] at (A.south) 
    { $A$ : \textcolor{red}{$n$ rows} $p$ columns};

\matrix (B) [matrix of math nodes,%
             nodes = {node style ge},%
             left delimiter  = (,%
             right delimiter =)] at (6*\myunit,6*\myunit)
{%
  b_{11} & |[node style sp]| b_{12}%
                  & \ldots & b_{1q}  \\
  b_{21} & |[node style sp]| b_{22}%
                  & \ldots & b_{2q}  \\
  \vdots & \vdots & \ddots & \vdots  \\
  b_{p1} & |[node style sp]| b_{p2}%
                  & \ldots & b_{pq}  \\
};
\node [draw,above=10pt] at (B.north) 
    { $B$ : $p$ rows \textcolor{red}{$q$ columns}};
% matrice résultat
\matrix (C) [matrix of math nodes,%
             nodes = {node style ge},%
             left delimiter  = (,%
             right delimiter = )] at (6*\myunit,0)
{%
  c_{11} & c_{12} & \ldots & c_{1q} \\
  c_{21} & |[node style sp,red]| c_{22}%
                  & \ldots & c_{2q} \\
  \vdots & \vdots & \ddots & \vdots \\
  c_{n1} & c_{n2} & \ldots & c_{nq} \\
};
% les fleches
\draw[blue] (A-2-1.north) -- (C-2-2.north);
\draw[blue] (A-2-1.south) -- (C-2-2.south);
\draw[blue] (B-1-2.west)  -- (C-2-2.west);
\draw[blue] (B-1-2.east)  -- (C-2-2.east);
\draw[<->,red](A-2-1) to[in=180,out=90]
  node[arrow style mul] (x) {$a_{21}\times b_{12}$} (B-1-2);
\draw[<->,red](A-2-2) to[in=180,out=90]
  node[arrow style mul] (y) {$a_{22}\times b_{22}$} (B-2-2);
\draw[<->,red](A-2-4) to[in=180,out=90]
  node[arrow style mul] (z) {$a_{2p}\times b_{p2}$} (B-4-2);
\draw[red,->] (x) to node[arrow style plus] {$+$} (y)%
                  to node[arrow style plus] {$+\raisebox{.5ex}{\ldots}+$} (z)%
                  to (C-2-2.north west);

\node [draw,below=10pt] at (C.south) 
    {$ C=A\times B$ : \textcolor{red}{$n$ rows}  \textcolor{red}{$q$ columns}};

\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容