在裸环境中留一行空白tikzcd
(如下所示)会产生“缺少插入 $”错误。
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
A
B
\end{tikzcd}
\end{document}
但是当我将tikzcd
环境包装在center
环境中时(如下所示),没有编译错误。
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\begin{center}
\begin{tikzcd}
A
B
\end{tikzcd}
\end{center}
\end{document}
这是怎么回事?
答案1
为大卫的评论添加一些细节。
环境center
和其他类似的“显示”环境\trivlist
在内部使用该构造。(我使用 David Carlisle 的术语使用 \trivlist 和 \list 定义环境)。
所以\center
定义为:
\trivlist \centering \item \relax
\trivlist
而在(实际上)的定义中,对\@trivlist
的重新定义为\par
:
\if@newlist \advance \par@deathcycles \@ne \ifnum \par@deathcycles >\@m
\@noitemerr {\@@par }\fi \else {\@@par }\fi
这实际上意味着\par
(或空白行)\par
在环境中的行为不像常规那样center
,因此不会产生在tikzcd
环境内部时看到的错误center
。