![TikZ-cd 中的嵌套图表](https://linux22.com/image/285621/TikZ-cd%20%E4%B8%AD%E7%9A%84%E5%B5%8C%E5%A5%97%E5%9B%BE%E8%A1%A8.png)
自上次更新以来,以下代码不再编译
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
UL
\arrow{r}{{\begin{tikzcd}1\arrow{r}{a}&2\end{tikzcd}}}
&UR
\\
DL
\arrow{r}
&DR
\end{tikzcd}
\end{document}
错误消息
包 pgf 错误:没有已知名为 tikz@f@2-2-1 的形状。
奇怪的是,如果只有第一个箭头,代码就会编译并给出所需的图表。
此外,如果我使用第一个箭头的语法\arrow[r, "{\begin{tikzcd}1\arrow{r}{a}&2\end{tikzcd}}"]
,即使只有一个箭头,代码也无法编译。这次错误消息是
TeX 容量超出,抱歉 [grouping levels=255]。 \bgroup
编辑:上述代码不能用 pgf 3.0 和 tikc-cd 0.9(最新版本)编译,但可以用 TeXLive 2013 和以前版本的 pgf 和 tikz-cd 编译。
答案1
由于 tikz-cd 0.9 和 pgf 3.0 显然破坏了嵌套 tikz-cd 图的可能性(即使在使用 & 的其他环境中,参见 Luke Maurer 的评论)我想出了这个非优雅且手动的解决方案:
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
UL
\arrow{r}{
\begin{tikzpicture}
\node(1){1};
\node(2)[right of=1]{2};
\draw[->](1)--node{a} (2);
\end{tikzpicture}}
%\arrow[r, "{\begin{tikzpicture}
% \node(1){1};
% \node(2)[right of=1]{2};
% \draw[->](1)--node{a} (2);
%\end{tikzpicture}}"]
&UR
\\
DL
\arrow{r}
&DR
\end{tikzcd}
\end{document}
也就是说,仍然可以在 \arrow 中使用 tikzpicture 环境(使用箭头的旧语法或新语法)。
我提出这个解决方案是为了防止有人想要一个可行的解决方案,但我仍然希望有一种更优雅的方法来做到这一点。