我已经从parbox
命令中受益,对我的算法的某些行应用了一些缩进。
现在,我需要对then
关键字应用缩进。由于或then
自动生成,因此我无法使用 的典型技巧。\If
ElsIf
parbox
我需要的是下图所示:每个then
关键字必须与其对应的关键字对齐else if
:
我的MWE
:
\documentclass[letterpaper, 10pt, conference]{IEEEconf}
\let\proof\relax
\let\endproof\relax
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{mathrsfs}
\usepackage{algorithm}
\usepackage{algorithmicx,algpseudocode}
\newcommand\Sth[1]{S^{#1}\mkern-3mu(\mkern-2.5mu\theta^{\mkern-1mu#1}\mkern-2mu)}
\title{My Title*}
\author{Guy$^{1}$
\thanks{*This work was not supported by any organization}
\thanks{$^{1}$Guy is with Hell, {\tt\small [email protected]}}
}
\algnewcommand\algorithmicforeach{\textbf{for each}}
\algdef{S}[FOR]{ForEach}[1]{\algorithmicforeach\ #1\ \algorithmicdo}
\let\oldReturn\Return
\renewcommand{\Return}{\State\oldReturn}
\begin{document}
\maketitle
\thispagestyle{empty}
\pagestyle{empty}
\begin{abstract}
ABSTRACT
\end{abstract}
\section{INTRODUCTION}
\begin{algorithm}
\renewcommand{\thealgorithm}{}
\caption{algorithm}
\label{euclid}
\begin{algorithmic}[1]
\While{true}
\ForEach{xxx}
\State do $A$
\If{nothing happened}
\State \parbox[t]{\dimexpr\linewidth-\algorithmicindent}{$\text{updated var} \gets \varnothing$\strut}
\ElsIf{objects lie inside the same operating space}
\ForEach{object with sweeping function $S$}
\State \parbox[t]{\dimexpr\linewidth-\algorithmicindent}{$\text{updated var} \gets S$\strut}
\EndFor
\ElsIf{objects lie inside different operating space}
\ForAll{functions $B$}
\ForAll{functions $C$}
\State \parbox[t]{\dimexpr\linewidth-\algorithmicindent}{$\text{updated adjacency} \gets S$\strut}
\EndFor
\EndFor
\EndIf
\Return updated var
\EndFor
\EndWhile\label{euclidendwhile}
\end{algorithmic}
\end{algorithm}
\end{document}
答案1
- 这里没有行号
then
——这表明这不是一条自己的逻辑行。 - 这只是一个换行符,因为文本太长,一行无法容纳下它。
- 我使用了非常小的字体来向您显示逻辑换行发生的位置。
- 您使用具有两列的文档类 - 因此文本宽度非常小。
(我用了在两列布局中显示框架/边距以显示边界。