所以我正在尝试遵循这一点此链接将文本分成两行。这是我的代码:
\documentclass[12pt]{article}
\usepackage{float}
\usepackage[margin=1in]{geometry}
\usepackage{tikz}
\usetikzlibrary{shapes, arrows.meta, automata, calc}
\begin{document}
\begin{figure}[H]\centering
\begin{tikzpicture}[node distance=2cm, >= Stealth, auto, shorten >= 1pt]
\node[state](L){$L$};
\node[state] at ($(L)+(60:4cm + 2.5em)$)(M) {$M$};
\node[state] at ($(M)+(-60:4cm+ 2.5em)$)(H) {$H$};
\path[->](L) edge node [sloped, above] {$S$ \newline $R\left(L, S, M\right) = -1$} (M);
\end{tikzpicture}
\end{figure}
\end{document}
输出:
我尝试了该\\
命令,但出现错误。如何修复它并确保文本分成两行?
答案1
这是使用我之前回答中的样式的版本angled
。每当您想要允许节点中出现换行符时,您需要添加一些对齐方式(例如align=left
)或一些text width
。
\documentclass[12pt]{article}
\usepackage{float}
\usepackage[margin=1in]{geometry}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,automata, positioning,calc}
\tikzset{angled/.style args={#1 and #2 of #3}{%
at={($(#3.#1)+(#1:#2)$)},anchor={#1+180}}}
\begin{document}
\begin{figure}[H]\centering
\begin{tikzpicture}[node distance=4cm,>=stealth]
\node[state](L){$L$};
\node[angled=60 and 4cm of L,state] (M) {$M$};
\node[state,right=of L] (H) {$H$};
\path[->](L) edge node [sloped, above,align=center]
{$S$\\ $R\left(L, S, M\right) = -1$} (M);
\end{tikzpicture}
\end{figure}
\end{document}
答案2
为什么要将浮点数嵌套在浮点数中?
节点可以包含多行文本,这些文本已定义text width
(align=...
用于格式化节点中的文本)用于自动中断节点内容(如果可能)或仅align=...
用于手动中断。为此,您需要使用\\
行终止符。因此,您的 MWE 应该是:
\documentclass[12pt]{article}
\usepackage[margin=1in]{geometry}
\usepackage{tikz}
\usetikzlibrary{arrows.meta, automata, calc, shapes}
\begin{document}
\begin{figure}[ht]
\centering
\begin{tikzpicture}[>= Stealth, shorten >= 1pt]
\node[state](L){$L$};
\node[state] at ($(L)+(60:4cm + 2.5em)$)(M) {$M$};
\node[state] at ($(M)+(-60:4cm+ 2.5em)$)(H) {$H$};
\path[->](L) edge node [sloped, above, align=center] {$S$\\ $R(L,S,M)=-1$} (M);
\end{tikzpicture}
\end{figure}
\end{document}