在 tikz-cd 中将文本节点拆分为多行

在 tikz-cd 中将文本节点拆分为多行

此 LaTeX 代码:

\documentclass{article}
\usepackage{tikz-cd}
\usepackage{amsmath}

\begin{document}

\begin{figure}[ht]
\begin{tikzcd}[row sep=3cm, column sep=0.9cm]
& \text{binary relations}
\arrow[rd, shift left]
\arrow[ld, shift left] \\
\text{pointfree funcoids between powersets}
\arrow[ru, shift left]
\arrow[rr, shift left]
& & \text{antitone Galois connections between powersets}
\arrow[lu, shift left]
\arrow[ll, shift left]
\end{tikzcd}
\end{figure}

\end{document}

生成太宽的图表:

在此处输入图片描述

我想将节点中的文本拆分为多行,例如:

幂集之间的反音伽罗瓦联络

请解释一下如何操作。

答案1

例如,您可以使用\parboxtabular作为长标签:

\documentclass{article}
\usepackage{tikz-cd}
\usepackage{amsmath}

\begin{document}
\begin{tikzcd}[row sep=3cm, column sep=0.9cm]
& \parbox{2cm}{\centering binary relations}
\arrow[rd, shift left]
\arrow[ld, shift left] \\
\parbox{3cm}{\centering pointfree funcoids between powersets}
\arrow[ru, shift left]
\arrow[rr, shift left]
& & \parbox{3cm}{\centering antitone Galois connections between powersets}
\arrow[lu, shift left]
\arrow[ll, shift left]
\end{tikzcd}

\begin{tikzcd}[row sep=3cm, column sep=0.9cm,every cell/.append style={align=center}]
& \text{binary relations}
\arrow[rd, shift left]
\arrow[ld, shift left] \\
\begin{tabular}{c}
pointfree funcoids \\
between powersets
\end{tabular}
\arrow[ru, shift left]
\arrow[rr, shift left]
& & \begin{tabular}{c}
antitone Galois connections \\
between powersets
\end{tabular}
\arrow[lu, shift left]
\arrow[ll, shift left]
\end{tikzcd}
\end{document}

在此处输入图片描述

答案2

这是一个解决方案:

\documentclass{article}
\usepackage{tikz-cd}
\usepackage{amsmath}
\newcommand\mlnode[1]{\fbox{\begin{tabular}{@{}c@{}}#1\end{tabular}}}

\begin{document}

\begin{figure}[ht]
  \begin{tikzcd}[row sep=3cm, column sep=0.9cm]
    & \fbox{binary relations}
    \arrow[rd, shift left]
    \arrow[ld, shift left] \\
    \mlnode{pointfree funcoids\\ between powersets}
    \arrow[ru, shift left]
    \arrow[rr, shift left]
    & & \mlnode{antitone Galois\\ connections\\ between powersets}
    \arrow[lu, shift left]
    \arrow[ll, shift left]
  \end{tikzcd}
\end{figure}

\end{document} 

在此处输入图片描述

答案3

tikz-cdmatrix of math nodes默认使用不允许直接换行的 。但您不想在这里使用数学,因此您可以通过设置math mode=falsetikz-cd将使用matrix of nodes然后)禁用数学模式,然后将文本放入节点而不使用\text{}

完成此操作后,您可以指定text width并设置align=center为自动换行和居中对齐。您也可以手动添加换行符\\,但需要用括号括住相关节点文本。

\documentclass{article}
\usepackage{tikz-cd}

\begin{document}

\begin{tikzcd}[
    row sep=3cm, column sep=0.9cm, math mode=false,
    cells={text width=13em, align=center}
]
& binary relations
\arrow[rd, shift left]
\arrow[ld, shift left] \\
pointfree funcoids between powersets
\arrow[ru, shift left]
\arrow[rr, shift left]
& & {antitone Galois connections \\ between powersets}
\arrow[lu, shift left]
\arrow[ll, shift left]
\end{tikzcd}

\end{document}

在此处输入图片描述

相关内容