如何让“for all xxx do”出现在一行上?

如何让“for all xxx do”出现在一行上?

这是一个例子

\documentclass[12pt,oneside,a4paper,onecolumn]{article}
\usepackage{graphicx,color,setspace,hyperref}
\usepackage[left=1.5in,top=1.25in,bottom=1.25in,right=1.25in]{geometry}
\usepackage{latexsym,amssymb,amsmath}
\usepackage{algorithm}
\usepackage{algorithmic}
\usepackage{caption}

\begin{document}

\begin{algorithm*}[t]                                                           
    \begin{algorithmic}[1]
        \FORALL{$i \in S$}
            \STATE{Do something}
        \ENDFOR
    \end{algorithmic}
\end{algorithm*}

\end{document}

结果是: 在此处输入图片描述

但是我只想有一行“for all i \in S do Do something”。该怎么做?

答案1

这是与包一致的定义algorithmic

\makeatletter
\newcommand{\LINEFORALL}[3][default]{%
  \ALC@it\algorithmicforall\ #2\ \algorithmicdo%
  \ALC@com{#1}\ #3\ \algorithmicendfor%
}
\makeatother

平均能量损失

\documentclass[12pt,oneside,a4paper,onecolumn]{article}
\usepackage{graphicx,color,setspace,hyperref}
\usepackage[left=1.5in,top=1.25in,bottom=1.25in,right=1.25in]{geometry}
\usepackage{latexsym,amssymb,amsmath}
\usepackage{algorithm}
\usepackage{algorithmic}
\usepackage{caption}

\makeatletter
\newcommand{\LINEFORALL}[3][default]{%
  \ALC@it\algorithmicforall\ #2\ \algorithmicdo%
  \ALC@com{#1}\ #3\ \algorithmicendfor%
}
\makeatother

\begin{document}

\begin{algorithm*}[t]
    \begin{algorithmic}[1]
        \LINEFORALL{$i \in S$}{Do something}
    \end{algorithmic}
\end{algorithm*}

\end{document} 

输出:

在此处输入图片描述

如果您希望在新行中使用“end for”,请按如下方式更改其定义

\makeatletter
\newcommand{\LINEFORALL}[3][default]{%
  \ALC@it\algorithmicforall\ #2\ \algorithmicdo%
  \ALC@com{#1}\ #3\ALC@it\algorithmicendfor%
}
\makeatother

你将拥有

在此处输入图片描述


编辑

如果您想摆脱“end for”,请注意您不能使用\ENDFOR来关闭“for all”内联语句。在这种情况下,最好也定义一个新命令\LINEENDFOR。换句话说,使用以下定义

\makeatletter
\newcommand{\LINEFORALL}[3][default]{%
  \ALC@it\algorithmicforall\ #2\ \algorithmicdo%
  \ALC@com{#1}\ #3%
}
\newcommand{\LINEENDFOR}{\ALC@it\algorithmicendfor}
\makeatother

然后你可以简单地使用

\LINEFORALL{$i \in S$}{Do something}

如果你不想关闭“for all”语句,

\LINEFORALL{$i \in S$}{Do something}
\LINEENDFOR

否则。

答案2

\documentclass[12pt]{article}
\usepackage{algorithm}
\usepackage{algorithmic}
\begin{document}
  \begin{algorithm*}[t]                                                           
   ~\strut\scriptsize1: 
   \algorithmicforall{}  $i \in S$  \algorithmicdo{}        
   Do something 
   \algorithmicendfor
\end{algorithm*}

\end{document}

在此处输入图片描述

也可以使用行号的预定义定义。

相关内容