在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
似乎混淆了。我收到以下错误消息:
- 包 pgf 错误:单个 & 符号与错误的 catcode 一起使用。\end{align*}
- 程序包 pgf 错误:没有已知的名为“tikz@f@6-1-3”的形状。我认为罪魁祸首是单元格 1-1 中的 tikzcd 箭头。
- 包 pgf 错误:单个 & 符号与错误的 catcode 一起使用。\end{align*}
- 程序包 pgf 错误:没有已知的名为“tikz@f@7-1-3”的形状。我认为罪魁祸首是单元格 1-1 中的 tikzcd 箭头。
- 包 pgf 错误:单个 & 符号与错误的 catcode 一起使用。\end{align*}
- 程序包 pgf 错误:没有已知的名为“tikz@f@8-1-3”的形状。我认为罪魁祸首是单元格 1-1 中的 tikzcd 箭头。
- 包 pgf 错误:单个 & 符号与错误的 catcode 一起使用。\end{align*}
- 软件包 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}
然而,我看不出这种对齐的真正原因。相反,将它们放在不同的位置强调了它们所展示的不同属性。