如何将箭头旁边的文字分成两行?

如何将箭头旁边的文字分成两行?

考虑

\begin{tikzcd}
F(X) \arrow[r, "F(f)"] \arrow[d, "\eta_X"'] & F(Y) \arrow[d, "here is a really long sentence"] \\
G(X) \arrow[r, "G(f)"'] & G(Y)
\end{tikzcd}

我想让描述右下箭头的文本分成两行。我试过\\\newline,但不幸的是,这不起作用。

答案1

您可以使用以下方式实现此目的\parbox

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

\begin{document}

\begin{tikzcd}
F(X) \arrow[r, "F(f)"] \arrow[d, "\eta_X"'] & F(Y) \arrow[d, "\scriptsize\parbox{2cm}{here is a really long sentence}"] \\
G(X) \arrow[r, "G(f)"'] & G(Y)
\end{tikzcd}

\end{document} 

enter image description here

答案2

\\或者\newline默认情况下不在任何 TikZ 节点中工作,参见TikZ 节点中的手动/自动换行和文本对齐。从这个问题中你会看到,如果你设置align=left(或center,或right),那么你就可以使用\\。在这种情况下,你需要做

"long \\ text"align=left

如果标签中有实际文本而不是数学表达式,则还需要切换到文本模式:

"\text{long} \\ \text{text}"align=left

\text宏来自amsmath

您可能还想将标签稍微移离线条,为此您可以这样做

"\text{long} \\ \text{text}"{align=left,right=2mm}

请注意额外的括号,用于表示两个选项都属于"text"。在下面的完整示例中,我还缩小了字体大小,就像 Bernard 在他的回答中所做的那样。

output of code

\documentclass[border=5mm]{standalone}
\usepackage{amsmath}
\usepackage{tikz-cd}
\begin{document}

\begin{tikzcd}
F(X) \arrow[r, "F(f)"] \arrow[d, "\eta_X"'] & F(Y)
   \arrow[d, "\text{here is a} \\ \text{really long sentence}"{align=left,right=2mm,font=\scriptsize}] \\
G(X) \arrow[r, "G(f)"'] & G(Y)
\end{tikzcd}
\end{document}

相关内容