如何让 tikzcd 位于 align 内部?

如何让 tikzcd 位于 align 内部?

gathered附属环境下,代码

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

生成:
在此处输入图片描述

现在,我希望使用交换图对齐句子。我尝试使用align*环境执行以下操作:

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

align*但是and的 & 符号tikzcd似乎混淆了。我收到以下错误消息:

  1. 包 pgf 错误:单个 & 符号与错误的 catcode 一起使用。\end{align*}
  2. 程序包 pgf 错误:没有已知的名为“tikz@f@6-1-3”的形状。我认为罪魁祸首是单元格 1-1 中的 tikzcd 箭头。
  3. 包 pgf 错误:单个 & 符号与错误的 catcode 一起使用。\end{align*}
  4. 程序包 pgf 错误:没有已知的名为“tikz@f@7-1-3”的形状。我认为罪魁祸首是单元格 1-1 中的 tikzcd 箭头。
  5. 包 pgf 错误:单个 & 符号与错误的 catcode 一起使用。\end{align*}
  6. 程序包 pgf 错误:没有已知的名为“tikz@f@8-1-3”的形状。我认为罪魁祸首是单元格 1-1 中的 tikzcd 箭头。
  7. 包 pgf 错误:单个 & 符号与错误的 catcode 一起使用。\end{align*}
  8. 软件包 pgf 错误:没有已知的名为“tikz@f@9-1-3”的形状。我认为罪魁祸首是单元格 1-1 中的 tikzcd 箭头。检测到过满的 \hbox(66.04643pt 太宽)

我怎样才能解决这个问题?

答案1

正如@David Carlisle 在他的评论中提到的,使用简单的表格可以解决您的问题:

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

在此处输入图片描述

答案2

您需要ampersand replacement=\&在选项中使用\begin{tikzcd}\&来代替&来分隔单元格。

另一方面,我认为这里不需要数学显示:您想要呈现两个事实(实际上是两个含义),因此请使用列表。

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

在此处输入图片描述

通过测量单词“左”和“右”,对齐两个图并不困难:

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

在此处输入图片描述

然而,我看不出这种对齐的真正原因。相反,将它们放在不同的位置强调了它们所展示的不同属性。

相关内容