以下示例给出了一个错误
\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}
}