1

With the gathered subsidiary environment, the code

\newcommand{\id}{\mathrm{id}}

\[\begin{gathered}
    \text{if $g$ is a left-inverse of $f$, then }
    \begin{tikzcd}
            A\ar[r, "f"]\ar[rr, "\id_A"', bend right = 30] & B\ar[r, "g"] & A
    \end{tikzcd}
    \text{ commutes; and,}\\
    \text{if $g$ is a right-inverse of $f$, then }
    \begin{tikzcd}
        B \ar[r, "g"]\ar[rr, "\id_B", bend right = 30] & A\ar[r, "f"] & B
    \end{tikzcd}
    \text{ commutes.}
\end{gathered}\]

produces:
enter image description here

Now, I wish to use align the sentences at the commutative diagrams. I try the following using the align* environment:

\begin{align*}
    \text{if $g$ is a left-inverse of $f$, then }
    & \begin{gathered}[c]
        \begin{tikzcd}
            A\ar[r, "f"]\ar[rr, "\id_A"', bend right = 30] & B\ar[r, "g"] & A
        \end{tikzcd}
    \end{gathered}
    \text{ commutes; and,}\\
    \text{if $g$ is a right-inverse of $f$, then } & 
    & \begin{tikzcd}
        B \ar[r, "g"]\ar[rr, "\id_B", bend right = 30] & A\ar[r, "f"] & B
    \end{tikzcd}
    \text{ commutes.}
\end{align*}

But the ampersands of align* and tikzcd seem to get mixed up. I get the following error messages:

  1. Package pgf Error: Single ampersand used with wrong catcode. \end{align*}
  2. Package pgf Error: No shape named `tikz@f@6-1-3' is known. I think the culprit is a tikzcd arrow in cell 1-1.
  3. Package pgf Error: Single ampersand used with wrong catcode. \end{align*}
  4. Package pgf Error: No shape named `tikz@f@7-1-3' is known. I think the culprit is a tikzcd arrow in cell 1-1.
  5. Package pgf Error: Single ampersand used with wrong catcode. \end{align*}
  6. Package pgf Error: No shape named `tikz@f@8-1-3' is known. I think the culprit is a tikzcd arrow in cell 1-1.
  7. Package pgf Error: Single ampersand used with wrong catcode. \end{align*}
  8. Package pgf Error: No shape named `tikz@f@9-1-3' is known. I think the culprit is a tikzcd arrow in cell 1-1. Overfull \hbox (66.04643pt too wide) detected

How can I get around this?

6
  • 1
    See section 3.4 in the tikz-cd manual. Inside align & has special meaning other than the one used in tikzcd so they clash.
    – daleif
    Apr 5 at 13:46
  • I'm not sure what's the purpose of using \[...\] and gathered here. Or, worse, align*
    – egreg
    Apr 5 at 13:55
  • 2
    why are you doing this in a math alignment? simply use a tabular or in fact I wouldn't align at all, and just use paragraphs. Apr 5 at 13:59
  • @egreg I am using align* so that I the lower diagram is exactly below the upper one. And I used gathered so that I could break the first line after "and;". I couldn't use \[...\] here for this. And \beging{tikzcd} ... \end{tikzcd} will not be centered if I don't use a super-environment like \[...\].
    – Atom
    Apr 5 at 14:22
  • @DavidCarlisle Thanks! tabular gave me what I wanted!
    – Atom
    Apr 5 at 14:31

2 Answers 2

2

As mention @David Carlisle in his comment, use of simple table can be solution for your problem:

\documentclass{article}
\usepackage{amsmath}
\newtheorem{theorem}{Theorem}
\newcommand{\id}{\mathrm{id}}
\usepackage{tikz-cd}

\begin{document}

\begin{theorem}
Suppose something about $f$ and $g$:

\begin{tabular}{@{} lcl @{}}
if $g$ is a left-inverse of $f$, then
    &   \begin{tikzcd}
     A\ar[r, "f"]\ar[rr, "\id_A"', bend right = 30] & B\ar[r, "g"] & A
        \end{tikzcd}    &   commutes;   \\
if $g$ is a right-inverse of $f$, then
    &   \begin{tikzcd}
    B \ar[r, "g"]\ar[rr, "\id_B"', bend right = 30] & A\ar[r, "f"] & B
        \end{tikzcd}    & commutes.
\end{tabular}
\end{theorem}

\end{document}

enter image description here

2
  • @DavidCarlisle, thank you very much! Sorry, I should wait with mine little a bit ...
    – Zarko
    Apr 5 at 15:14
  • so long as egreg doesn't get the tick, all is well:-) Apr 5 at 15:18
3

You would need ampersand replacement=\& in the options to \begin{tikzcd} and \& instead of & for separating cells.

On the other hand, I can't see the need for a math display here: you want to present two facts (actually two implications), so use a list.

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz-cd}

\newtheorem{theorem}{Theorem}

\newcommand{\id}{\mathrm{id}}

\begin{document}

\begin{theorem}
Suppose something about $f$ and $g$;
\begin{itemize}
\item if $g$ is a left-inverse of $f$, then
  $\begin{gathered}\begin{tikzcd}
     A\ar[r, "f"]\ar[rr, "\id_A"', bend right = 30] & B\ar[r, "g"] & A
  \end{tikzcd}\end{gathered}$
  commutes;

\item if $g$ is a right-inverse of $f$, then
  $\begin{gathered}\begin{tikzcd}
        B \ar[r, "g"]\ar[rr, "\id_B"', bend right = 30] & A\ar[r, "f"] & B
  \end{tikzcd}\end{gathered}$
  commutes.
\end{itemize}
\end{theorem}

\end{document}

enter image description here

It wouldn't be difficult to align the two diagrams, by measuring the words “left” and “right”:

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz-cd}

\newtheorem{theorem}{Theorem}

\newcommand{\id}{\mathrm{id}}

\begin{document}

\begin{theorem}
Suppose something about $f$ and $g$;
\begin{itemize}
\settowidth{\dimen0}{left}
\settowidth{\dimen2}{right}
\addtolength{\dimen2}{-\dimen0}

\item if $g$ is a left-inverse of $f$, then\hspace{\dimen2}
  $\begin{gathered}\begin{tikzcd}
     A\ar[r, "f"]\ar[rr, "\id_A"', bend right = 30] & B\ar[r, "g"] & A
  \end{tikzcd}\end{gathered}$
  commutes;

\item if $g$ is a right-inverse of $f$, then
  $\begin{gathered}\begin{tikzcd}
        B \ar[r, "g"]\ar[rr, "\id_B"', bend right = 30] & A\ar[r, "f"] & B
  \end{tikzcd}\end{gathered}$
  commutes.
\end{itemize}
\end{theorem}

\end{document}

enter image description here

However, I see no real reason for the alignment. To the contrary, having them in different positions underlines that they illustrate distinct properties.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.