2012-01-11 13 views
7

मेरी समस्या यह है कि मैं एमएक्स में एक लाटेक्स दस्तावेज़ लिख रहा हूं जिसमें इसमें बहुत सी कोड है। मैं विभिन्न स्थानों में \ minted और \ verbatim वातावरण दोनों का उपयोग कर रहा हूं। जब मैं लाटेक्स (पीडीएफएलएक्स का उपयोग कर) संकलित करता हूं, परिणामी पीडीएफ ठीक दिखता है। कच्चे लाटेक्स कोड में, मैं सी-प्रमुख मोड के नियमों का उपयोग करके ऑटो इंडेंट करने में सक्षम होना चाहता हूं।इंडेक्स लाटेक्स मोड emacs में सी कोड का एक क्षेत्र

उदाहरण के लिए, मैं निम्नलिखित क्षेत्र

\begin{verbatim} 

void main(void) 
{ 
printf("Hello World \n\r"); 
} 

\end{verbatim} 

चिह्नित करने के लिए सक्षम होना चाहते हैं और Emacs ऑटो प्रारूप है

\begin{verbatim} 

void main(void) 
{ 
    printf("Hello World \n\r"); 
} 

\end{verbatim} 

दूसरे शब्दों में की तरह, मैं सक्षम होना चाहते हैं यह देखने के लिए उस भाग पर इंडेंट-क्षेत्र चलाने के लिए जो वास्तव में सी मोड से नियमों का उपयोग कर सी कोड है, भले ही मैं लाटेक्स मोड में हूं।

क्या किसी को पता है कि यह संभव है?

+0

यू-पंक और साइमन दोनों ही काम प्रदान करते हैं। क्या इस प्रक्रिया को तेज करने के लिए वैसे भी है मेरे .emacs में एक छोटा सा फ़ंक्शन जो सी-मोड, इंडेंट शुरू कर सकता है, और लाटेक्स मोड पर वापस स्विच कर सकता है? – jarvisschultz

+0

मुझे लगता है कि मेरा जवाब वही करेगा जो आप चाहते हैं। – Tyler

+0

यदि आपको पता नहीं था, तो क्या आपने लेटेक्स [लिस्टिंग] (http://en.wikibooks.org/wiki/LaTeX/Packages/Listings) पैकेज को देखा है? मेरा मानना ​​है कि आप केवल स्रोत कोड इनपुट कर सकते हैं ताकि कॉपी और पेस्ट करने की आवश्यकता न हो। – TreyA

उत्तर

3

यहां एक त्वरित सुधार है। कुछ काम के साथ आप यह सामान्य बना सकते हैं - यानी, मौजूदा प्रमुख मोड की जांच करें, और पूरा होने के बाद उस मोड पर वापस स्विच करें। के रूप में है, यह, सी-मोड, इंडेंट पर स्विच करता है तो LaTeX-मोड (AucTex) है, जो तत्काल समस्या का हल करने के लिए स्विच:

(defun indent-region-as-c (beg end) 
    "Switch to c-mode, indent the region, then switch back to LaTeX mode." 
    (interactive "r") 
    (save-restriction 
    (narrow-to-region beg end) 
    (c-mode) 
    (indent-region (point-min) (point-max))) 
    (LaTeX-mode)) 

बाइंड कि अपने पसंदीदा कुंजी करने के लिए और आप बिल्कुल तैयार होना चाहिए।

4

M-x indent-region इंडेंट केवल क्षेत्र, नहीं पूर्ण बफर, तो:

  1. सी मोड
  2. इंडेंट अपने क्षेत्र LaTeX मोड पर वापस
  3. बारी
4

आप उपयोग कर सकते हैं चालू C-x 4 c अपने वर्तमान बफर को अप्रत्यक्ष बफर पर क्लोन करने के लिए। उस अप्रत्यक्ष बफर को सी-मोड में रखें और वहां अपना इंडेंटिंग करें। अप्रत्यक्ष बफर पर अधिक जानकारी के लिए Emacs info manual, node 'Indirect Buffers' देखें।

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