2010-01-07 14 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} 

कैसे यह उन पंक्तियों इंडेंट करने के लिए संभव है:

मैं निम्नलिखित लिखने के लिए सक्षम होने के लिए चाहते हैं? मैं सफलता के बिना googling द्वारा जवाब खोजने की कोशिश कर रहा हूं। मुझे आशा है कि आप लोग मेरी मदद कर सकते हैं। धन्यवाद।


मैं वर्तमान में उपयोग कर रहा हूँ खरोज के लिए निम्नलिखित:

  \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

मैं यह सुझाव देने वाला था ... एक इंडस्ट्रेट मैक्रो परिभाषित करना सार्थक लगता है। –

+0

धन्यवाद चार्ल्स, मैंने अपनी पोस्ट में इंडस्टेट कमांड जोड़ा। –

+0

यह बहुत अच्छा है। धन्यवाद! – Anna

2

मैं तुम्हें उस तरह से इंडेंट नहीं है सुझाव है। पैकेज को आपके पाठकों के लिए आसान बनाने के लिए मानक तरीके से छद्म कोड को प्रारूपित करने के लिए डिज़ाइन किया गया है।

आप उस मानक को तोड़ने की कोशिश कर रहे हैं। पाठकों की अपेक्षा करने के अनुरूप कोड को फिर से लिखने का प्रयास करना बेहतर होगा।

आप चरण ए और बी को लेबल क्यों कर रहे हैं, वैसे भी? प्रत्येक कथन को अपना कदम माना जाता है। ऐसा लगता है कि आप अतिरिक्त संरचना जोड़ रहे हैं जो वास्तव में कोड को कम पठनीय बनाता है। क्या आप टिप्पणी के साथ एक ही प्रभाव प्राप्त कर सकते हैं? एक कथन में "कुछ करें" और "एक और चीज" को संयोजित करने के बारे में कैसे?

+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"} 

संपादित करें: मैं एल्गोरिटिमिक्स का उपयोग करें (इसलिए \ राज्य और नहीं \ STATE)

+0

धन्यवाद। महान सामान्य उपकरण। – Abhinav