我尝试在tikzcd
的节点中添加新行,但失败了。知道原因吗?
平均能量损失:
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
This works:
\begin{tikz}
\node[draw,align=left]{B \\ B};
\end{tikz}
This fails:
\begin{tikzcd}
|[align=left]|{B \\ B}
\end{tikzcd}
\end{document}
错误:! Package tikz Error: Giving up on this path. Did you forget a semicolon?.
答案1
不确定是否有更优雅的方法,但你可以嵌套tabular
(如果你的内容应该处于数学模式,请使用array
而不是tabular
):
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
This works:
\begin{tikz}
\node[draw,align=left]{B \\ B};
\end{tikz}
This fails:
\begin{tikzcd}
|[align=left]|{\begin{tabular}[b]{@{}l@{}}B \\ B\end{tabular}}
\end{tikzcd}
\end{document}
答案2
你问为什么,那么让我简单解释一下为什么事情会失败:
tikz-cd
默认情况下使用matrix of math nodes
,这意味着您处于数学模式,无法仅使用来添加换行符\\
。但您可以使用array
(如建议的那样)。- 您可以通过设置(或 来告诉
tikz-cd
不使用数学模式。然后,改用 a,这允许您排版。但您需要使用括号,并且需要为相关节点设置宽度。(当然,您也可以设置然后输入。)\tikzcdset{math mode=false}
\begin{tikzcd}[math mode=false]
matrix of nodes
\\
math mode=false
$B$ \\ $B$
因此,这也是有效的:
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
This works:
\tikzcdset{math mode=false}
\begin{tikzcd}
|[draw,text width=2em]|{B \\ B}
\end{tikzcd}
\end{document}