在算法中打破长线

在算法中打破长线

我在算法中有一长行,想将其分成两行。对于 中的类似情况equationssplit可以使用 。如何在算法中执行此操作?

\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

您可以\WRP像这样定义一个新命令:

\newcommand{\WRP}{\par\qquad\(\hookrightarrow\)\enspace}
...
\begin{document}
...
\begin{algorithm}[H]
\begin{algorithmic}[1]
...
\STATE This line\WRP needs to be wrapped

句法: \newcommand{\name}[args]{definition}

笔记:确保该命令尚未定义。

结果:

算法中的换行

答案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}

相关内容