2011-03-04 7 views
6

मैं वर्तमान में बीमर ब्लॉक में सुंदर प्रिंट कोड में बीमर और लिस्टिंग पैकेज का उपयोग कर रहा हूं। तो क्या मैं कैसी लगती है कर रहा हूँ:एक एलएसएनवेनवायर बनाने में समस्या जो किसी अन्य पर्यावरण को शुरू/समाप्त करती है

\begin{block}{} 
\begin{lstlisting} 
int foobar(void) { return 0; } 
\end{lstlisting} 
\end{block} 

अब, मैं यह बोझिल block और lstlisting वातावरण हर शुरू करने के लिए लगता है। मैं एक साधारण codeblock वातावरण है कि सिर्फ यह होता है करने के लिए करना चाहते हैं:

\lstnewenvironment{codeblock} 
{\begin{block}{}} 
{\end{block}} 

लेकिन दुर्भाग्य से, बीमर दस्तावेज़ नहीं रह गया है, संकलित निम्न त्रुटि के साथ:

\begin{codeblock} 
int foobar(void) { return 0; } 
\end{codeblock} 

तो, मैं की तरह कुछ करने की कोशिश की :

! Missing } inserted. 
<inserted text> 
       } 
l.178 \end{frame} 

? 

क्या ऐसा करने का कोई तरीका है?

Problem with creating a newenvironment in LaTeX में, एंड्रियास ग्रेच की एक ही समस्या थी, लेकिन यह इसे हल कर सकता था क्योंकि संलग्न वातावरण में प्रवेश करने/बाहर निकलने का एक और तरीका था। लेकिन block बीमर पर्यावरण के मामले में, ऐसा लगता है कि \begin{block}...\end{block} करने से कोई दूसरा तरीका नहीं है।

+0

क्या इस समस्या को हल किया गया है? – Werner

उत्तर

0

मुझे एक ही समस्या थी और इसके लिए कोई समाधान नहीं मिला। मेरा कामकाज \ lstinputlisting कमांड का उपयोग करना था और कोड को एक अलग फ़ाइल में रखना था। यह बहुत अच्छा है यदि आपके पास असली कोड है जिसे आप शामिल करना चाहते हैं। छोटे उदाहरणों के लिए ऐसा नहीं है।

एक और कामकाज कोड को स्निपलेट को {frame} वातावरण शुरू करने से पहले एक चर में डालना है और फिर इसका संदर्भ देना है। यह कैसे करें लेटेक्स-बीमर दस्तावेज़ों में समझाया गया है। यह आपको अपने कस्टम पर्यावरण/कमांड को नियोजित करने की अनुमति भी देगा।

0

मैं का उपयोग कर इस "हल" fancyvrb पैकेज के \VerbatimOut (write environmnet body verbatim to a file देखें) एक अस्थायी फ़ाइल जो तब lstinputlisting के साथ शामिल किया जा सकता है बनाने के लिए:

\usepackage{fancyvrb} 
\usepackage{listings} 

\newenvironment{blocklisting}[1] 
{\begingroup\lstset{#1}\VerbatimOut{blocklisting-tmp.txt}} 
{\endVerbatimOut\begin{block}{Code}\lstinputlisting{blocklisting-tmp.txt}\end{block}\endgroup} 

किसी कारण से मैं पर्यावरण के तर्क नहीं कर सके वैकल्पिक, हालांकि।

इस तरह उपयोग किया:

\begin{document} 
\begin{frame}[fragile] 
\frametitle{Whatever} 
\begin{blocklisting}{language=Java, basicstyle=\Huge} 
Code 
\end{blocklisting} 

\begin{blocklisting}{} 
Code 2 
\end{blocklisting} 
\end{frame} 
\end{document} 

नहीं इष्टतम समाधान है, लेकिन यह काम करता है, मैं लगता है।

संबंधित मुद्दे

 संबंधित मुद्दे