繁体   English   中英

乳胶算法中的缩进

[英]Indentation in latex algorithmic

如何在乳胶中的算法(算法)中缩进行?

我希望能够写下列内容:

\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

这似乎是完全错误的。 但是有效。

试试这个:

\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

我建议你不要这样缩进。 该软件包旨在以标准方式格式化伪代码,以使您的读者更容易。

你正试图打破这个标准。 尝试重写代码以符合读者的期望会好得多。

无论如何,为什么要标记步骤A和B? 每个陈述都应该是它自己的一步。 您似乎正在添加额外的结构,实际上使代码的可读性降低。 您可以通过评论获得相同的效果吗? 把“做某事”和“做另一件事”合并成一个陈述怎么样?

我无法让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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM