为了制作关于函数组合的练习,我想制作一些类似这张(丑陋的)图片的东西。
从 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}
我不知道我是否明白编写命令来制作此类图表的意义。您需要多少张图表?它们是否都应该具有相同的结构?