2010-01-07 52 views
16

如何在乳膠中算法(算法)中縮進直線?膠乳算法中的縮進

我希望能夠編寫如下:

\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 

這似乎是完全錯誤的。但工作。

+5

問題應該移到tex.stackexchange。 – gatoatigrado

回答

22

試試這個:

\STATE\hspace{\algorithmicindent} do something 
\STATE\hspace{\algorithmicindent} do another thing 

應該更好地工作,因爲它使用當前縮進值進行縮進。

編輯:用查爾斯的建議,你可以定義一個新的命令,\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 
+0

我正要提出這個......定義一個INDSTATE宏似乎是值得的。 –

+0

謝謝Charles,我在我的文章中添加了INDSTATE命令。 –

+0

這太好了。謝謝! – Anna

2

我建議你不要縮進的方式。該軟件包旨在以標準方式對僞碼進行格式化,以使讀者更加輕鬆。

您正試圖打破該標準。嘗試重寫代碼以符合讀者的期望會更好。

無論如何,你爲什麼要標記步驟A和B?每個陳述都應該是自己的一步。看起來你正在添加額外的結構,實際上使得代碼更不可讀。你能通過評論獲得相同的效果嗎?如何將「做某事」和「做另一件事」結合爲一個陳述?

+0

我無法組合這些步驟。我嘗試使用評論。沒關係,但不太清楚我想要什麼。 – Anna

+1

這看起來像安娜將這些步驟分組,以便她可以在文本的正文中討論它們。 –

+0

無論如何感謝您的評論,我從中學到了一些東西。 – Anna

2

我不能讓阿洛克的工作,所以我寫了這個:

% 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)

+0

謝謝。偉大的通用工具。 – Abhinav