它为何有效?

它为何有效?

当我在 tikz-cd 单元格中放置垂直线“|”时,例如这样:

\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
|A|
\end{tikzcd}
\end{document}

然后我得到错误

 Package tikz Error: A node must have a (possibly empty) label text.

是什么原因导致此错误?这是一个错误还是设计使然?

在竖线周围放置花括号似乎可以解决这个问题,因此可以通过替换|A|来解决这个{|A|}问题。但是当有很多竖线时,这可能会变得乏味。有没有更好的解决方法?

答案1

做这个

\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\makeatletter
\let\tikz@lib@matrix@start@cell=\tikz@lib@matrix@normal@start@cell
\makeatother
\begin{tikzcd}
|A|
\end{tikzcd}
\end{document}

它为何有效?

TikZ-cd 是通过\matrix...;命令实现的,因此一切都归结为 TikZ 如何解析\matrix。在每个单元格的开头 \tikz@lib@matrix@start@cell执行。它将首先检查是否看到垂直线|

% tikzlibrarymatrix.code.tex line 28-29
\def\tikz@lib@matrix@start@cell{%
  \pgfutil@ifnextchar|{\tikz@lib@matrix@with@options}%
                      {\tikz@lib@matrix@normal@start@cell}}%

您需要做的就是告诉 TikZ 不要检查|。这可以通过让start@cell成为normal@start@cell 在没有条形图时应执行的命令来实现。

相关内容