tikzcd:节点内容中的换行符

tikzcd:节点内容中的换行符

我尝试在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}

在此处输入图片描述

相关内容