pdfLaTeX 与 tikz-cd 和箭头标签中的逗号一起挂起

pdfLaTeX 与 tikz-cd 和箭头标签中的逗号一起挂起

当我编译包含

\documentclass{article}
\usepackage{mathtools}
\mathtoolsset{centercolon}
\usepackage{tikz-cd}

\begin{document}
\begin{tikzcd}\ar[r,","] &\end{tikzcd}$:$
\end{document}

使用该命令pdflatex -interaction=nonstopmode file.tex,编译会挂起,而不是给我一个错误消息。

我应该去哪里举报此事?

(我在 ubuntu 21.04 上使用 texlive 2020)

答案1

不是错误。tikz-cd解析逗号分隔的选项时,选项列表r,","将变成三个项目:r"",您可以看到其中的错误。您通常会得到一个低级错误:

! Argument of \tikz@quote@@parser has an extra }.
<inserted text> 
                \par 
l.6 \begin{tikzcd}\ar[r,","] & b\end{tikzcd}
                                            $:$
?

但是当-interaction=nonstopmode你忽略这个错误并希望得到最好的结果时,TeX 却陷入了无限循环并挂起。

如果要在此处使用逗号,请将其括在括号中:

\documentclass{article}
\usepackage{mathtools}
\mathtoolsset{centercolon}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd} a \ar[r,"{,}"] & b \end{tikzcd}$:$
\end{document}

在此处输入图片描述

答案2

需要括号,tikzcd 文档明确说明了这一点:

类似地,标签可以通过语法“⟨标签文本⟩”⟨标签选项⟩接收附加选项。如果⟨标签文本⟩和⟨标签选项⟩包含逗号,则它们都需要用花括号括起来。

其中有一个对标签上的主要 TikZ 文档(第 17.10.4 节)的引用,其中讨论了 的替代语法label={...},但它似乎在 tikzcd 构造中不起作用(因此,例如,\arrow[...]你不能写,但确实有效)。\ar[r,label={,}]\ar[r,"{,}"]

相关内容