2011-07-18 13 views
24

मैं दिखाया गया है lstlisting की इनलाइन संस्करण का उपयोग करते हैं:

\lstinline{!$omp parallel for} 

वाक्य रचना vim में प्रकाश डाला गलत हो जाता है, और लेटेक्स फ़ाइल के शेष के रूप में अगर लाल रंग का है यह कोड सूची का सभी हिस्सा है। यह डॉलर $ है जो समस्या का कारण बनता है। इससे कैसे बचा जा सकता है?

+6

यह टेक्स्ट के लिए हाइलाइटिंग सामान्य विम वाक्यविन्यास में एक बग प्रतीत होता है क्योंकि '\ verb {! $ Omp} 'एक ही परिणाम उत्पन्न करता है। आप http://mysite.verizon.net/astronaut/vim/syntax/tex.vim.gz से नवीनतम वाक्यविन्यास फ़ाइल आज़मा सकते हैं और अपने लेखक चार्ल्स ई कैंपबेल, जूनियर – Jakob

+2

50 प्रतिनिधि से संपर्क कर सकते हैं जो किसी के साथ उत्तर देता है ** tex.vim के लिए ** ठीक करें। – ThiefMaster

उत्तर

0

मेरे पास यह समस्या नहीं है। मैं फ़ाइलटाइप = टेक के साथ विम 7.3.46 चला रहा हूं। (मेरा .tex फ़ाइलों पर "plaintex" पर डिफ़ॉल्ट है; आप फ़ाइल प्रकार को जांचना चाहेंगे: सेट ft?)

+0

भाग्यशाली आप। मैं विम 7.3 का उपयोग करता हूं और 'सेट ft?' फ़ाइल टाइप = tex देता है। – user2023370

6

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

एकमात्र स्वीकार्य फिक्स सिरेक्स से सिंटैक्स हाइलाइटर को फिर से लिखना होगा, जो कि टीएक्स के पूर्ण कार्यान्वयन का उपयोग करता है जो स्रोत कोड में प्रत्येक टोकन के लिए मेटा जानकारी को उत्सर्जित करता है। यह विशाल प्रोजेक्ट है। जहां तक ​​मुझे पता है, वर्तमान में कोई भी उपलब्ध टीएक्स कार्यान्वयन ऐसी जानकारी नहीं देता है, जिसका अर्थ है कि किसी को वास्तव में इसे स्वयं लिखना होगा।

+4

वैसे यह पर्याप्त होगा यदि यह '\ lstinline {...}' ब्लॉक को संभालता है जैसे कि उदा। '\ start {lstlisting} ... \ end {lstlisting} 'जहां सब कुछ ठीक काम करता है। – ThiefMaster

4

यह मेरे लिए काम करता है:

\lstinline[mathescape]{!$\$$omp parallel for} 

जहां तक ​​मैं समझता हूँ, यह गणित मोड में डॉलर प्रतीक typesets, लेकिन मैं कोई अंतर दिखाई नहीं देख सकता था।

2

मुझे टेक्सास फ़ाइलों में बुनाई के लिए आर कमांड डालने के साथ एक ही समस्या थी। मेरे पास $ और \rinline{} के भीतर अन्य विशेष वर्ण थे। और मैंने इसे ठीक किया ताकि विम इस आदेश के भीतर पाठ को अनदेखा कर सके।

आप tex.vim फ़ाइल संपादित करना चाहते हैं, मेरे वितरण पर यह sudo vim /usr/share/vim/vim73/syntax/tex.vim

सीए पर है लाइन लाइन 228:

syn match texInputFile  "\\\(epsfig\|input\|usepackage\)\s*\(\[.*\]\)\={.\{-}}"  contains=texStatement,texInputCurlies,texInputFileOpt 

को बदलें:

syn match texInputFile  "\\\(epsfig\|input\|usepackage\|rinline\)\s*\(\[.*\]\)\={.\{-}}"  contains=texStatement,texInputCurlies,texInputFileOpt 

... या lstinline के लिए:

syn match texInputFile  "\\\(epsfig\|input\|usepackage\|lstinline\)\s*\(\[.*\]\)\={.\{-}}"  contains=texStatement,texInputCurlies,texInputFileOpt 
+0

वैकल्पिक रूप से 'syn मिलान texInputFile' जोड़ें \\ lstinline \ s * \ (\ [। * \] \) \ = {। \ {-}} "= texStatement, texInputCurlies, texInputFileOpt'' $ HOME/.vim/बाद/वाक्यविन्यास/tex/lstinline.vim' (या समान)। अधिक जानकारी के लिए https://github.com/LaTeX-Box-Team/LaTeX-Box/issues/124 – timss

0

लिंक TIMSS द्वारा user1174052 के जवाब पर पोस्ट के माध्यम से जा रहे हैं, मैं Dr Chip's Vim Page पाया, जो lstlisting.vba.gz विमबॉल प्लगइन प्रदान करता है। lstlisting वातावरण के डाउनलोड, विम में खुला ...

vim lstlisting.vba.gz 

... vimball पर अमल ...

:so % 

... और अगली बार जब आप एक LaTeX फ़ाइल को खोलने, सामग्री पूरी तरह से कर रहे हैं सिंटैक्स हाइलाइटिंग द्वारा अनदेखा किया गया।

क्रेडिट उपयोगकर्ता टाइम्स पर जाता है, जिन्होंने लाटेक्स-बॉक्स टिकट के लिंक को पोस्ट किया, जहां उन्होंने डॉ चिप के पृष्ठ पर भी लिंक पोस्ट किया। मैंने यह जवाब केवल "सीधा लिंक" शॉर्टकट के रूप में जोड़ा है।

+0

क्रेडिट के लिए धन्यवाद देखें! मुझे लगता है कि मैंने आखिरकार इस मुद्दे का निष्कर्ष निकाला है, इसलिए कृपया मेरी नई (बड़ी) पोस्ट पर नज़र डालें। – timss

16

आखिरकार इस मुद्दे को एक बार और सभी के लिए हल करें!

मैंने tex.vim के रखरखाव चार्ल्स ई कैंपबेल को मेल किया, जिसमें सुझाव दिया गया कि वह लिस्टिंग पैकेज के लिए हाइलाइटिंग नियम जोड़ देगा। हालांकि यह tex.vim में लिस्टिंग पैकेज के लिए समर्थन की कमी का पता चला है वास्तव में जानबूझकर है। तर्क :h tex-package पाया जा सकता है। संक्षेप में, आप अपने स्वयं के विस्तारित सिंटैक्स हाइलाइटिंग नियम (पोस्ट के नीचे देखें) बनाना चाहते हैं:

Tex: अधिक कमांड को हाइलाइट करना चाहते हैं?

लाटेक्स एक प्रोग्राम करने योग्य भाषा है, और इसलिए हजारों पैकेज विशेष 0Tविशेष लाटेक्स कमांड, वाक्यविन्यास और फ़ॉन्ट्स के पूर्ण हैं। यदि आप ऐसे पैकेज का उपयोग कर रहे हैं तो आप अक्सर यह चाहते हैं कि वितरित वाक्यविन्यास/tex.vim का समर्थन करेगा। हालांकि, स्पष्ट रूप से यह अव्यवहारिक है। इसलिए कृपया तकनीकों का उपयोग करने पर विचार करें, सिंटैक्स/tex.vim द्वारा प्रदान की गई हाइलाइटिंग को बढ़ाने या संशोधित करने के लिए जोड़ें। कृपया आपके द्वारा लिखे गए किसी भी एक्सटेंशन को अपलोड करने पर विचार करें, जो आमतौर पर $ HOME/बाद/वाक्यविन्यास/tex/[pkgname] .vim में http://vim.sf.net/ पर जायेगा।

व्यक्तिगत रूप से मुझे लगता है कि यह थोड़ा दुर्भाग्यपूर्ण है कि इसमें शामिल नहीं होने वाला है, क्योंकि यह निश्चित रूप से औसत उपयोगकर्ता के लिए Vim का उपयोग करके LaTeX लिखने के लिए दहलीज बढ़ाता है। lstlisting, lstinline आदि के लिए सिंटैक्स हाइलाइटिंग ढूँढना और जोड़ना बहुत आसान नहीं है। यह नहीं दिखता है जैसे कि यह कभी भी जल्द ही या तो बदलने के लिए जा रहा है जब this धागा को देखकर।

देवसोलर पहले ही इसे पाया है (और मैं क्रेडिट की सराहना करता हूं!), लेकिन कैंपबेल कुछ example LaTeX package support vimballs प्रदान करता है। पहला, lstlisting.vba.gz, lstlisting और lstinputlisting के लिए नियमों को हाइलाइट करना शामिल है। हालांकि इसमें lstinline की कमी है, जो इस विषय के बारे में है।

Proper highlighting of verbatim, lstlisting and lstinline environments.

यह पसंदीदा समाधान हो रहा है -

अंत में, यहाँ मेरी listings.vim$HOME/.vim/after/syntax/tex/

syn region texZone start="\\begin{lstlisting}" end="\\end{lstlisting}\|%stopzone\>" 
syn region texZone start="\\lstinputlisting" end="{\s*[a-zA-Z/.0-9_^]\+\s*}" 
syn match texInputFile "\\lstinline\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt 

में रहते है। यह एक /usr/share/vim/.. में प्रणाली विस्तृत फ़ाइलों को बदलने के लिए की आवश्यकता नहीं है, तो आप वाक्य रचना ही प्रकाश डाला फिक्सिंग के बजाय डाउनलोड करने और एक vimball स्रोत या बदलने के लिए वातावरण की जरूरत नहीं है। मैं इसे अधिक सुलभ बनाने के लिए इसे एक साधारण प्लगइन के रूप में रिलीज़ करने में देख सकता हूं।

अंत में, यह जांचना याद रखें कि आप वास्तव में tex फ़ाइल प्रकार चला रहे हैं और plaintex नहीं है, जो व्यवहार्य होने के लिए बहुत अधिक नहीं है। इसे पहले से ही एक टिप्पणी में पोस्ट किया गया है, लेकिन कुछ और जानकारी ticket I added to LaTeX-Box में पाई जा सकती है।

+0

"जैसा कि अन्य उत्तरों में दिखाया गया है, कोनराड रुडॉल्फ का सिद्धांत है कि विम का सिंटैक्स हाइलाइटर नौकरी के लिए तैयार नहीं है।" - गलत। आपको समझ में नहीं आता कि लाटेक्स कैसे काम करता है। यदि आप समस्या को ठीक करते हैं, तो एक सरल '\ let \ foo \ verb' इसे पुन: उत्पन्न करता है। आप ** इस समस्या को सामान्य तरीके से हल नहीं कर सकते हैं, जैसा कि मैंने अपने उत्तर में समझाया है। आप कभी भी उच्च सीमित समाधान प्राप्त करने की उम्मीद कर सकते हैं (जो स्पष्ट रूप से ठीक है यदि आप इसे अपने उद्देश्यों के लिए अनुकूलित करते हैं, लेकिन डिफ़ॉल्ट रूप से प्रदान करना अव्यवहारिक है यदि आप लाटेक्स का सही उपयोग करते हैं, यानी अर्थात् कोड लिखते समय)। –

+0

@KonradRudolph क्षमा करें अगर मैंने आपके उत्तर को गलत समझा। किस संदर्भ में '\ let \ foo \ verb' समस्या को पुन: उत्पन्न करेगा? मैंने इसके साथ खेलने की कोशिश की, लेकिन इसका कोई फायदा नहीं हुआ। मेरे उत्तर में "अर्थात् कोड" के लिए काम नहीं करने वाले टेक्स्ट सिंटैक्स हाइलाइटिंग में नाबालिग किस प्रकार बदलता है? – timss

+0

ठीक है जब आप पूर्वनिर्धारित लोगों की बजाय अपने स्वयं के मैक्रोज़ का उपयोग करते हैं, तो सिंटैक्स हाइलाइटर अब वर्बैटिम कोड को पहचान नहीं लेता है। आपको अपने मैक्रोज़ के बारे में स्पष्ट रूप से अवगत होना चाहिए। –

4

प्रारंभिक समस्या मुझे लग रही थी, कि शेष टेक्स्ट-फ़ाइल को गड़बड़-अप सिंटैक्स हाइलाइटिंग के साथ दिखाया गया है। तो संभवतः आसान और व्यावहारिक समाधान

%stopzone 

का उपयोग lstlisting-region के बाद किया जा सकता है।

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