如何在乳胶算法(算法)中缩进行?
我希望能够写下以下内容:
\begin{algorithm}[H]
\caption{My Awesome Program} \label{awesome-algorithm}
\begin{algorithmic}[1]
\FOR { $i=0$ to $logn$ }
\STATE Step A:
% would like the indent the next lines...
\STATE do something
\STATE do another thing
\STATE Step B
\ENDFOR
\end{algorithmic}
\end{algorithm}
如何缩进这些行? 我一直试图通过谷歌搜索找到答案,但没有成功。我希望你们能帮助我。感谢。
我目前正在使用以下内容进行缩进:
\STATE \ \ \ \ do something
这似乎是完全错误的。但是有效。
答案 0 :(得分:24)
请改为尝试:
\STATE\hspace{\algorithmicindent} do something
\STATE\hspace{\algorithmicindent} do another thing
它应该更好用,因为它使用当前缩进值来缩进。
编辑:使用Charles的建议,您可以定义一个新命令\INDSTATE
:
\newcommand{\INDSTATE}[1][1]{\STATE\hspace{#1\algorithmicindent}}
然后在需要缩进时使用它。默认情况下,\INDSTATE
缩进一级,但您可以更改它:
\INDSTATE do something % What you want
\INDSTATE[2] do something % Indent by twice the amount
答案 1 :(得分:3)
我建议你不要这样缩进。该软件包旨在以标准方式格式化伪代码,以使您的读者更容易。
你正试图打破这个标准。尝试重写代码以符合读者的期望会更好。
为什么要标记步骤A和B?每个陈述都应该是它自己的一步。您似乎正在添加额外的结构,实际上使代码的可读性降低。您可以通过评论获得相同的效果吗?如何将“做某事”和“做另一件事”合并为一个陈述?
答案 2 :(得分:2)
我无法让Alok工作,所以我写了这个:
% Put in preamable:
\usepackage{forloop}
\newcounter{ct}
\newcommand{\markdent}[1]{\forloop{ct}{0}{\value{ct} < #1}{\hspace{\algorithmicindent}}}
\newcommand{\markcomment}[1]{\Statex\markdent{#1}}
然后,在缩进级别3处输入“这是我的评论”:
\markcomment{3}{"This is my comment"}
编辑: 我使用algoritmicx(因此\ State而不是\ STATE)