2009-11-16 10 views
5

मैं लाटेक्स में एक एल्गोरिदम टाइप करना चाहता हूं। मैं ऐसा करने के लिए एल्गोरिदमिक पैकेज और पर्यावरण का उपयोग कर रहा हूं। सबकुछ बढ़िया काम कर रहा है सिवाय इसके कि जब मैं टिप्पणियां जोड़ता हूं (\ COMMENT का उपयोग करके), वे बयान के तुरंत बाद आउटपुट होते हैं। मैं सभी टिप्पणियों को गठबंधन करना चाहता हूं (और बयानों से ऑफसेट)। क्या ऐसा करने का कोई आसान तरीका है?लाटेक्स के एल्गोरिदमिक वातावरण में टिप्पणियां स्वरूपण

"Reproducing" एचटीएमएल के पूर्व में पीडीएफ उत्पादन, मैं चाहता हूँ:

if condition then 
    something   # comment 1 
else 
    something else # comment 2 
बजाय

if condition then 
    something # comment 1 
else 
    something else # comment 2 

उत्तर

11

मैं इस तरह यह करना होगा:

 
\usepackage{eqparbox} 
\renewcommand{\algorithmiccomment}[1]{\hfill\eqparbox{COMMENT}{\# #1}} 

नोट 1: दो दस्तावेज़ संकलन टिप्पणी की अधिकतम चौड़ाई निर्धारित करने के लिए आवश्यक हैं।

नोट 2: जाहिर है, यह केवल एकल पंक्ति टिप्पणियों के लिए काम करता है जो बहुत लंबे नहीं हैं।


इस विचार से जारी रखते हुए, यहां जिस तरह का एक ही प्रकार में एक पूरा उदाहरण है, लेकिन यह भी एक कमांड उपलब्ध कराने टिप्पणी है कि लाइनों पर तोड़ने के लिए:

 
\documentclass{amsbook} 
\usepackage{algorithmic,eqparbox,array} 
\renewcommand\algorithmiccomment[1]{% 
    \hfill\#\ \eqparbox{COMMENT}{#1}% 
} 
\newcommand\LONGCOMMENT[1]{% 
    \hfill\#\ \begin{minipage}[t]{\eqboxwidth{COMMENT}}#1\strut\end{minipage}% 
} 
\begin{document} 
\begin{algorithmic} 
\STATE do nothing \COMMENT{huh?} 
\end{algorithmic} 
\begin{algorithmic} 
\STATE do something \LONGCOMMENT{this is a comment broken over lines} 
\end{algorithmic} 
\begin{algorithmic} 
\STATE do something else \COMMENT{this is another comment} 
\end{algorithmic} 
\end{document} 
+0

यह वास्तव में शानदार है! आपके उदाहरण में अलग-अलग एल्गोरिदमिक वातावरण अनावश्यक हैं, बल्कि यह हाइलाइट करते हैं कि संरेखण अलग-अलग एल्गोरिदम में रहेगा; एक जोड़ा बोनस अब मुझे eqparbox पर पढ़ने की जरूरत है। – foxcub

+0

असल में यह एक अनपेक्षित दुष्प्रभाव था :) यदि आप एल्गोरिदम के बीच आकार बदलने के लिए टिप्पणियां चाहते हैं, तो यह अधिक प्रयास होगा (वास्तव में काउंटर को शामिल करने के लिए '{COMMENT}' को बदलने की आवश्यकता है)। –

0
if condition then 
    something  \hspace{2in} # comment 1 
else 
    something else \hfill # comment 2 

मुझे यकीन है कि अगर hspace और hfill एक अंदर काम करेंगे नहीं हूँ वातावरण। मुझे लगता है कि वे करेंगे। \ hfill टिप्पणियां सही फ्लश सेट कर देगा, जबकि \ hspace {space} आपको आपके टेक्स्ट के बीच उतनी जगह देगा। सौभाग्य।

+1

हालांकि यह * काम करेगा, इसके लिए हर मामले के लिए डूबने की आवश्यकता होगी और हर बार कुछ भी बदलाव होगा। युक! – dmckee

0

आप के लिए खुद indentions चाहते हैं अलग-अलग एल्गोरिदम, आप टिप्पणी आदेशों के पुनर्वितरण में काउंटर को शामिल करके ऐसा कर सकते हैं। यहां एक उदाहरण दिया गया है:

\documentclass{amsbook} 
\usepackage{algorithmicx,algorithm,eqparbox,array} 

\algrenewcommand{\algorithmiccomment}[1]{\hfill// \eqparbox{COMMENT\thealgorithm}{#1}} 
\algnewcommand{\LongComment}[1]{\hfill// \begin{minipage}[t]{\eqboxwidth{COMMENT\thealgorithm}}#1\strut\end{minipage}} 

\begin{document} 
\begin{algorithm} 
\begin{algorithmic} 
\State{do nothing}\Comment{huh?} 
\end{algorithmic} 
\caption{Test Alg} 
\end{algorithm} 

\begin{algorithm} 
\begin{algorithmic} 
\State{do something} \LongComment{this is a comment broken over lines} 
\State{do something else} \Comment{this is another comment} 
\end{algorithmic} 
\caption{Other Alg} 
\end{algorithm} 
\end{document} 
संबंधित मुद्दे