2010-01-07 20 views
16

Latekste bir algoritmada (algoritmik) satırların girintisi nasıl girilir?Lateks algoritmisinde girinti

\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} 

Nasıl bu satırları girintili mümkündür:

aşağıdaki yazabilmek istersiniz? Yanıtı googling yaparak başarıya ulaşmaya çalışıyorum. Umarım bana yardımcı olabilirsiniz. Teşekkürler.


Şu anda girinti için aşağıdaki kullanıyorum: düpedüz yanlış

  \STATE \ \ \ \ do something 

. Ama işe yarıyor.

+5

soru tex.stackexchange öğesine taşınmalıdır. – gatoatigrado

cevap

22

yerine bu deneyin:

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

o girinti geçerli girinti değerini kullanır çünkü daha iyi çalışması gerekir.

Düzenleme: Charles öneri kullanarak, yeni bir komut, \INDSTATE tanımlayabiliriz:

\newcommand{\INDSTATE}[1][1]{\STATE\hspace{#1\algorithmicindent}} 

ve sonra kullanmak size girinti istediğinizde söyledi. Varsayılan olarak, \INDSTATE bir seviye girintiler, ancak bunu değiştirebilirsiniz:

\INDSTATE do something % What you want 
\INDSTATE[2] do something % Indent by twice the amount 
+0

Bunu önermek üzereydim ... Bir INDSTATE makrosunun tanımlanması faydalı görünüyor. –

+0

Teşekkürler Charles, yazımda INDSTATE komutunu ekledim. –

+0

Bu harika. Teşekkürler! – Anna

2

Seni böyle girinti yok öneririm. Paket, okuyucularınızı daha kolay hale getirmek için pseudocode'u standart bir şekilde biçimlendirmek üzere tasarlanmıştır.

Bu standardı bozmaya çalışıyorsunuz. Hangi okuyucuların beklediği ile uyumlu olacak şekilde kodu yeniden yazmayı denemek daha iyi olacaktır.

Neden A ve B adımlarını etiketliyorsunuz? Her ifadenin kendi adımı olması gerekiyordu. Aslında kodu daha az okunabilir yapan ekstra yapı ekliyor gibi görünüyor. Aynı etkiyi yorumlarla alabilir misiniz? Bir şeyi "bir şey yap" ve "başka bir şeyi" bir arada birleştirmeye ne dersin?

+0

Adımları birleştiremiyorum. Yorumu kullanmaya çalıştım. Tamam, ama ne istediğimi daha az açık. – Anna

+1

Bu, Anna'nın bu adımları gruplandırarak metnin gövdesinde konuşabilmesini sağlıyor. –

+0

Yine de yorumunuz için teşekkürler, ondan bir şey öğrendim. – Anna

2

Ben Alok yolunda olduğunu alamadım, bu yüzden bu yazdım: Sonra

% Put in preamable: 
\usepackage{forloop} 
\newcounter{ct} 
\newcommand{\markdent}[1]{\forloop{ct}{0}{\value{ct} < #1}{\hspace{\algorithmicindent}}} 
\newcommand{\markcomment}[1]{\Statex\markdent{#1}} 

, girinti 3. seviyedeki "Bu benim yorumdur" koymak:

\markcomment{3}{"This is my comment"} 

Düzenleme: Ben algoritmicx kullanın (bu nedenle \ State ve \ STATE değil)

+0

teşekkürler. Çok genel bir araç. – Abhinav