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
    Commented Apr 5, 2022 at 13:46
  • I'm not sure what's the purpose of using \[...\] and gathered here. Or, worse, align*
    – egreg
    Commented Apr 5, 2022 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. Commented Apr 5, 2022 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
    Commented Apr 5, 2022 at 14:22
  • @DavidCarlisle Thanks! tabular gave me what I wanted!
    – Atom
    Commented Apr 5, 2022 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
    Commented Apr 5, 2022 at 15:14
  • so long as egreg doesn't get the tick, all is well:-) Commented Apr 5, 2022 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.

You must log in to answer this question.

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