TikZ-cd 中的嵌套图表

TikZ-cd 中的嵌套图表

自上次更新以来,以下代码不再编译

\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 环境(使用箭头的旧语法或新语法)。

我提出这个解决方案是为了防止有人想要一个可行的解决方案,但我仍然希望有一种更优雅的方法来做到这一点。

相关内容