我在算法中有一长行,想将其分成两行。对于 中的类似情况equations
,split
可以使用 。如何在算法中执行此操作?
\documentclass{article}
\usepackage{amsmath}
\usepackage[boxed,vlined,linesnumbered,noresetcount]{algorithm2e}
\begin{document}
\begin{algorithm}[tp]
out := foo(x$\rightarrow$child[which]
,$\langle$1,0,0,old$\rangle$
,$\langle$0,0,0,new$\rangle$)\;
\end{algorithm}
\end{document}
答案1
设置可碎部分具有\parbox
足够的宽度使您可以随意破碎它以及正确对齐内容:
\documentclass{article}
\usepackage{mathtools}
\usepackage[boxed,vlined,linesnumbered,noresetcount]{algorithm2e}
\begin{document}
\begin{algorithm}[tp]
\texttt{out} $\vcentcolon=$ \textsc{foo}($\texttt{x} \rightarrow \texttt{child[which]}$, $\langle 1,0,0,\texttt{old} \rangle$, $\langle 0,0,0,\texttt{new} \rangle$\;
\texttt{out} $\vcentcolon=$ \textsc{foo}(\parbox[t]{.6\linewidth}{%
$\texttt{x} \rightarrow \texttt{child[which]}$, \\
$\langle 1,0,0,\texttt{old} \rangle$, \\
$\langle 0,0,0,\texttt{new} \rangle$)\;}
\end{algorithm}
\end{document}
答案2
类似这样,具有可调整的缩进。解决方案定义了一个由 和 构成的新命令,\myindent
采用一个参数作为长度。\newline
\makebox{#1}{}
代码
\documentclass{article}
\usepackage{amsmath}
\usepackage[boxed,vlined,linesnumbered,noresetcount]{algorithm2e}
\newcommand{\myindent}[1]{
\newline\makebox[#1cm]{}
}
\begin{document}
\begin{algorithm}[tp]
out := foo(x$\rightarrow$child[which]
\myindent{0.3},$\langle$1,0,0,old$\rangle$
\myindent{0.3},$\langle$0,0,0,new$\rangle$)\;
\end{algorithm}
\end{document}
答案3
答案4
在 LaTeX 中,有几种方法可以断开算法中的长行。最简单的方法之一是使用双反斜杠 (\\) 位于行尾。但是,有时这可能不太好用,尤其是当行位于某些预期结构内时,例如为了循环或如果堵塞。
在这种情况下,使用\quad命令会有所帮助。\quad 命令会添加一个水平空间,其宽度相当于当前字体中字符“q”的宽度。您可以多次使用 \quad 来创建合适的空间。
下面是在 Overleaf 算法中使用双 \quad 在 for 和 if 块内断掉长行的示例:
\begin{algorithm}
\caption{Example algorithm}
\begin{algorithmic}[1]
\For{obj in objects}
\If{criteria}
\State $x = x_1 + x_2 + x_3 +$\\
\quad \quad $x_4 + x_5 + x_6 + x_7 + x_8$
\EndIf
\EndFor
\end{algorithmic}
\end{algorithm}