Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

So as to produce exercises about compositions of function, I would like to produce something like this (ugly) picture.

enter image description here

From LaTeX point of view, the syntax could be like this :

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

The optional argument would be to display or not the "composition" arrow.

share
add comment

2 Answers

up vote 11 down vote accepted

Here is a possibility:

\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}

Result:

enter image description here

Beware: the node distances are optimized for this kind of inputs (in terms of node width).


Since the basic use is in math mode, perhaps is it is boring typing $ inside the \compoDiagram each time; it is for sure better:

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

Thus, a possible modification of the command is:

\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}
}
share
    
Thanks. I will play with this. Indeed the situation will look alqays the same for the names of the functions. For the formulas, I will test your solution. If I need some "customizations", I will post another post later. –  projetmbc Oct 6 '12 at 11:33
add comment

I would use TikZ to produce diagrams like the above. You could do something like

\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}

I don't know if I see the point in making a command to make such diagrams. How many diagrams do you need? And should they all have the same structure?

share
    
I will use it for exercices, corrections and also some part of my course. This is for 16 years old students. So one command is very usefull. –  projetmbc Oct 6 '12 at 11:31
add comment

This site is currently not accepting new answers.

Not the answer you're looking for? Browse other questions tagged .