问题

问题

我在用signalflowdiagram我从这里http://www.texample.net/tikz/examples/signal-flow-building-blocks/。然后我将其安装在我的texmf-local文件夹中。树如下所示:

/usr/local/texlive/texmf-local
tex
├── latex
│   ├── local
│   ├── signalflowlibrary
│   │   ├── macros.sty
│   │   ├── signalflowdiagram.sty
│   │   ├── tikzlibrarysignalflowarrows.code.tex
│   │   ├── tikzlibrarysignalflowblocks.code.tex
│   │   ├── tikzlibrarysignalflowdiagram.code.tex
│   │   └── tikzlibrarysignalflowoperators.code.tex
...

将必要的文件复制到如上所示的树后,我运行$ mktexlsr以确保 LaTeX 可以找到新的自定义包。

我可以确认它正常工作,因为此代码:

\documentclass[crop,tikz]{standalone}
\usepackage{signalflowdiagram}

\begin{document}
  \begin{signalflow}{Block diagram}
    \begin{scope}
      \node[input] (in) {$R(s)$};
      \node[filter] (plant) [right from=in] {$G(s)$};
      \path[r>] (in) -- (plant);
    \end{scope}
  \end{signalflow}
\end{document}

产生这张图片:

在此处输入图片描述

问题

现在我想使用 来定位节点\matrix。首先,我将展示如何开始\matrix工作,没有什么特别的:

\documentclass[crop,tikz]{standalone}
\usepackage{tikz}
%\usepackage{signalflowdiagram}
\usetikzlibrary{matrix}

\begin{document}
  \begin{tikzpicture}
  \matrix (m) [matrix of nodes]
  {%
    1 & 2 & 3 \\
    4 & 5 & 6 \\
  };
  \end{tikzpicture}
\end{document}

所以我明白了:

在此处输入图片描述

这次,我想使用 中的预定义块signalflowdiagram,因此我取消注释了 行。我的代码现在如下所示。请注意上面第一个示例中显示的和环境\usepackage{signalflowdiagram}的使用。signalflowscope

\documentclass[crop,tikz]{standalone}
\usepackage{tikz}
\usepackage{signalflowdiagram}
\usetikzlibrary{matrix}

\begin{document}
  \begin{signalflow}{Block diagram}
    \begin{scope}
      \matrix (m) [matrix of nodes]
      {%
        1 & 2 & 3 \\
        4 & 5 & 6 \\
      };
    \end{scope}
  \end{signalflow}
\end{document}

什么都没有出现:o 我甚至还没有开始使用预定义的块signalflowdiagram

在此处输入图片描述

即使使用普通的也tikzpicture什么也画不出来:

\documentclass[crop,tikz]{standalone}
\usepackage{tikz}
\usepackage{signalflowdiagram}
\usetikzlibrary{matrix}

\begin{document}
  \begin{tikzpicture}
    \matrix (m) [matrix of nodes]
    {%
      1 & 2 & 3 \\
      4 & 5 & 6 \\
    };
  \end{tikzpicture}
\end{document}

共同点

只要\usepackage{signalflowdiagram}存在,一切\matrix就会消失。

有没有办法开始signalflowdiagram使用\matrix?我试过侵入signalflowdiagram代码文件、禁用新环境的定义等,但无济于事。

答案1

根据 @marmot 的评论,样式文件本身很笨重。所以我自己在这里修改了一下:https://github.com/kitmonisit/signalflow

我将引用其中的例子:

\documentclass[crop,tikz]{standalone}
\usepackage{signalflowdiagram}
\usetikzlibrary{matrix}

\begin{document}
  \begin{tikzpicture}
    [every node/.style={anchor=center}]
    \matrix (m) [matrix of nodes,
      minimum width=7.5in,
      row sep=10mm,
      column sep=16mm]
    {%
      % row 0
      \node[input] (in)    {$R(s)$}; &
      \node[adder] (add)   {};       &
      \node[block] (plant) {$G(s)$}; &
      \node[node]  (tap)   {};       &
      \node[output](out)   {$C(s)$}; \\
      % row 1
      &
      &
      \node[block] (fb)    {$H(s)$}; &
      &
      & \\
    };

    \path[r>] (in) -- (add);
    \path[r>] (add) -- (plant);
    \path[r]  (plant) -- (tap);
    \path[r>] (tap) -- (out);
    \path[r>] (tap) |- (fb);
    \path[r>] (fb) -| (add);
  \end{tikzpicture}
\end{document}

信号流图

相关内容