边距中的交换图 (tikzcd)

边距中的交换图 (tikzcd)

以下示例给出了一个错误

\documentclass[12pt,oneside]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[a4paper,
            inner=10mm,
            outer=60mm,
            top=20mm,
            bottom=25mm,
            marginparsep=10mm,
            marginparwidth=40mm]{geometry}

\usepackage{tikz}
\usepackage{tikz-cd}

\begin{document}

foo
\marginpar{
\begin{tikzcd}
    E 
        \arrow[bend right=50]{rr}[,label=below:\scriptsize $g\circ f$]{}
        \arrow[r]{}[,label=above:\scriptsize $f$]{}
    & F
        \arrow[r]{}[,label=above:\scriptsize $g$]{}
    & G
\end{tikzcd}
}
bar

\end{document}

当交换图不在边距中时,它能够正确编译。

错误是:

! 未定义的控制序列。\pgf@matrix@last@nextcell@options ! 程序包 pgf 错误:单个 & 符号与错误的 catcode 一起使用。

答案1

这是一个众所周知的问题,当它处理&参数内部使用时,就会出错(可能是 catcodes)。解决方案使用这个:

\marginpar{
\begin{tikzcd}[ampersand replacement=\&]
    E 
        \arrow[bend right=50]{rr}[,label=below:\scriptsize $g\circ f$]{}
        \arrow[r]{}[,label=above:\scriptsize $f$]{}
    \& F
        \arrow[r]{}[,label=above:\scriptsize $g$]{}
    \& G
\end{tikzcd}
}

相关内容