当我在 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
在没有条形图时应执行的命令来实现。