这是一个例子
\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}
也可以使用行号的预定义定义。