创建图表来显示函数的组成

创建图表来显示函数的组成

为了制作关于函数组合的练习,我想制作一些类似这张(丑陋的)图片的东西。

在此处输入图片描述

从 LaTeX 的角度来看,语法可能是这样的:

\compoDiagram[$G \circ f$]{$x$}{$F$}{$y=F(x)}{G}{$z=G(y)=G \circ F(x)$}

可选参数是显示或不显示“组合”箭头。

答案1

有以下可能性:

\documentclass{article}
\usepackage{xparse,tikz}
\usetikzlibrary{positioning,calc}

\NewDocumentCommand{\compoDiagram}{o m m m m m}{%
        \begin{tikzpicture}[baseline=-0.5ex, on grid, node distance=1.5cm]
        \node (diagraminit) {#2};
        \node[draw,right of=diagraminit] (func1) {#3}; 
        \node[right= 2cm of func1] (diagrammid) {#4};
        \node[draw,right= 2cm of diagrammid] (func2) {#5}; 
        \node[right= 3cm of func2] (diagramend) {#6};
        \draw[-] (diagraminit)--(func1);        
        \draw[-latex] (func1)--(diagrammid);
        \draw[-] (diagrammid)--(func2);     
        \draw[-latex] (func2)--(diagramend);
        \IfNoValueTF{#1}{%true
        }
        {
        \node[draw] (diagramcomposition) at ($(diagraminit)!0.5!(diagramend)-(0,1)$){#1};
        \draw[-latex](diagraminit)|-(diagramcomposition)-|(diagramend);
        }
        \end{tikzpicture}
}


\begin{document}
\compoDiagram[$G \circ F$]{$x$}{$F$}{$y=F(x)$}{$G$}{$z=G(y)=G \circ F(x)$}

\vspace{2cm}

\compoDiagram{$x$}{$F$}{$y=F(x)$}{$G$}{$z=G(y)=G \circ F(x)$}
\end{document}

结果:

在此处输入图片描述

注意:节点距离针对此类输入进行了优化(就节点宽度而言)。


$因为基本用途是在数学模式中,也许每次在里面打字很无聊\compoDiagram;但肯定更好:

\compoDiagram[G \circ F]{x}{F}{y=F(x)}{G}{z=G(y)=G \circ F(x)}

因此,该命令的可能修改是:

\NewDocumentCommand{\compoDiagram}{o m m m m m}{%
        \begin{tikzpicture}[baseline=-0.5ex, on grid, node distance=1.5cm]
        \node (diagraminit) {\ensuremath{#2}};
        \node[draw,right of=diagraminit] (func1) {\ensuremath{#3}}; 
        \node[right= 2cm of func1] (diagrammid) {\ensuremath{#4}};
        \node[draw,right= 2cm of diagrammid] (func2) {\ensuremath{#5}}; 
        \node[right= 3cm of func2] (diagramend) {\ensuremath{#6}};
        \draw[-] (diagraminit)--(func1);        
        \draw[-latex] (func1)--(diagrammid);
        \draw[-] (diagrammid)--(func2);     
        \draw[-latex] (func2)--(diagramend);
        \IfNoValueTF{#1}{%true
        }
        {
        \node[draw] (diagramcomposition) at ($(diagraminit)!0.5!(diagramend)-(0,1)$){\ensuremath{#1}};
        \draw[-latex](diagraminit)|-(diagramcomposition)-|(diagramend);
        }
        \end{tikzpicture}
}

答案2

我会使用 TikZ 来制作上述图表。你可以这样做

\documentclass{memoir}

\usepackage{amsmath,amssymb}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}[node distance=.3\textwidth]
\node (x)  {$x$};
\node (y) [right of=x] {$y=f(x)$};
\node (z) [below of=y] {$z=g(y)=g\circ f(x)$};
\draw[->,thick] (x) -- node[above] {$f$} (y);
\draw[->,thick] (y) -- node[right] {$g$} (z);
\draw[->,thick] (x) -- node[anchor=north east] {$f\circ g$} (z);
\end{tikzpicture}

\end{document}

我不知道我是否明白编写命令来制作此类图表的意义。您需要多少张图表?它们是否都应该具有相同的结构?

相关内容