2011-01-12 5 views
9

मैं अपने अधिकांश लेख लिखने के लिए Emacs का उपयोग करता हूं। मैं reStructuredText का उपयोग करके लिखता हूं, और फिर कुछ प्रीप्रोकैसिंग के बाद उन्हें लाटेक्स में बदल देता हूं क्योंकि मैं अपने उद्धरण á-la LaTeX लिखता हूं।फ्लाईस्पेल को संदर्भ के अनुसार कुछ शब्दों को कैसे बाईपास करें?

En \cite[pp.~XXVIII--XXIX]{Crnkovic2002} se brindan algunos riesgos 
que se pueden asumir con el desarrollo basado en componentes, los 

यह पाठ कुछ कस्टम स्क्रिप्ट कि \cite हिस्सा इतना rst2latex अपना काम कर सकते हैं के साथ संबंधित द्वारा संसाधित किया जाता है: यह (स्पेनिश में) मेरी ग्रंथों में से एक का एक अंश है।

जब मैं फ्लाईस्पेल-मोड को सक्रिय करता हूं तो यह वर्तनी त्रुटियों के रूप में अधिकांश उद्धरण कुंजी को सिग्नल करता है।

मैं फ्लाईस्पेल को कैसे बता सकता हूं कि \cite कमांड के भीतर चीजों को वर्तनी न करें।

इसके अलावा, मैं आरएसटी मोड और फ्लाईस्पेल को कैसे जोड़ सकता हूं, ताकि आरएसटी मोड फ्लाईस्पेल को निम्नलिखित वर्तनी जांचने से रोक सके?

  • बाकी टिप्पणी
  • बाकी कोड शाब्दिक
  • बाकी निर्देश मापदंडों और तर्क
  • बाकी कच्चे निर्देश सामग्री

कोई भी विचार?

उत्तर

11

आप वैरिएबल ispell-parser वैल्यू 'tex पर सेट कर सकते हैं ताकि फ्लाईस्पेल टीएक्स अनुक्रमों को अनदेखा कर दे। ऐसा करने के लिए, आप इसे मैन्युअल रूप से सेट कर सकते हैं या तो एक बफर में तो जैसे:

M-: (setq 'ispell-parser 'tex) 

या आप एक छोटे से समारोह है कि क्या करेंगे कि आप के लिए लिखें। अपने .emacs फ़ाइल में निम्न रखो:

(defun flyspell-ignore-tex() 
    (interactive) 
    (set (make-variable-buffer-local 'ispell-parser) 'tex)) 

तो आप अभी भी इसे मैन्युअल रूप से आह्वान कर सकते हैं,

M-x flyspell-ignore-tex 

का उपयोग कर या आप एक हुक स्वचालित रूप से उस फ़ंक्शन को कॉल जोड़ सकते हैं जब भी आप एक के एक फ़ाइल को संपादित खास प्रकार का। आप अपने परिभाषित फ़ंक्शन को अपने auto-mode-alist पर जोड़कर बाद वाले करेंगे। अपने फ़ाइल नाम आम तौर पर ".rst" के साथ समाप्त कहो, तो अपने .emacs फाइल करने के लिए इस पंक्ति जोड़ें:

(add-to-list 'auto-mode-alist '("\\.rst$" . flyspell-ignore-tex)) 

अपने प्रश्न के दूसरे भाग के लिए के रूप में: flyspell मोड बनाने जैसे, जैसे बड़े क्षेत्रों, उपेक्षा, reST टिप्पणियां, आसानी से प्राप्त नहीं किया जा सकता है। यह स्पष्ट हो जाता है जब आप फ्लाईस्पेल के तरीके के बारे में सोचते हैं: यह शब्द-दर-शब्द आधार पर पाठ की जांच करता है। इसके लिए, flyspell-word केवल एक शब्द को देखता है जब यह पृष्ठभूमि में चल रही एक आईस्पेल प्रक्रिया को भेजता है। Ispell प्रक्रिया शब्दकोश लुकअप करता है और देता है कि वर्तमान शब्द सही है या नहीं। यदि flyspell-word को प्रत्येक बार जांचना था कि वर्तमान शब्द किसी टिप्पणी या अन्य क्षेत्र का हिस्सा है, जिसे चेक नहीं किया जाना चाहिए, तो यह धीमा होगा, क्योंकि इसमें बफर के माध्यम से काफी कुछ खोजना शामिल होगा।

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

यदि आप "फ्लाई" भाग के बिना कर सकते हैं, हालांकि, इस्पेल-मोड में एक बफर के किन क्षेत्रों को कस्टमाइज़ करने के लिए एक तंत्र है। यह चर ispell-skip-region-alist के माध्यम से किया जाता है। लेकिन हालांकि फ्लाईस्पेल-मोड ispell-mode से काम करता है, क्योंकि उस चर के ऊपर उल्लिखित कारणों का उपयोग फ्लाईस्पेल-मोड द्वारा नहीं किया जाता है।

+0

थॉमस, बहुत बहुत धन्यवाद! मैंने अतीत में ispell-mode का उपयोग किया है, लेकिन इस समय फ्लाईस्पेल मुझे बेहतर बनाता है। फिर भी, 'ispell-skip-region-alist' दस्तावेज़ पढ़ने के बाद, मुझे लगता है कि मुझे टिप्पणी के अंत का पता लगाने के लिए एक फ़ंक्शन प्रोग्राम करना होगा। मैं अभी तक Emacs Lisp से परिचित नहीं हूँ। वैसे भी 'ispell-parser' तरीका अभी भी सहायक है। हो सकता है कि मैं यह जांच सकूं कि इसका उपयोग कैसे किया जा सकता है और अपना खुद का आईपेल-पार्सर ट्वीक बना सकता है। – manu

+0

मनु, आपको शायद टिप्पणी की शुरुआत और अंत का पता लगाने के लिए एक लिस्प फ़ंक्शन प्रोग्राम करना पड़ेगा। आम तौर पर एक नियमित अभिव्यक्ति पर्याप्त होनी चाहिए, जो शुरुआत से मेल खाता है और अंत में मेल खाता है। आप दोनों को कोष्ठक में डाल देते हैं और इसे 'आईस्पेल-स्किप-एरिया-एलीस्ट' में जोड़ते हैं (मैंने कल इसे आजमाया है, वास्तव में यह मुश्किल नहीं है) और एक अच्छा मौका है कि 'आरएसटी मोड' में पहले से ही रेगेक्सप्स हैं कहीं तलाश रहे हैं। – Thomas

+0

पुन: संरचित पाठ में कोड खंड का अंत पता चला है जब इंडेंटेशन स्तर कम हो गया है। तो regexp मदद नहीं करेगा। शुभकामनाएं, मनु। – manu

4

आप flyspell-generic-check-word-predicate का भी उपयोग कर सकते हैं क्योंकि मैंने सुपर उपयोगकर्ता पर in this question समझाया है।

1

(aspell के tex फिल्टर वास्तव में ऐसा कर सकते हैं कि आप क्या चाहते हैं - लेकिन अगर आप एक अधिक सामान्य समाधान चाहते हैं)

हालांकि मैं नीचे दिए गए कोड का उपयोग कर रहा flyspell आप उन्हें में संख्या के साथ कुछ शब्दों नहीं ध्वज को राजी करने के लिए, कुछ संदर्भ से मेल खाने के लिए इस तरह के हुक का उपयोग कर सकते हैं।

आपकी इच्छित स्थिति में दिखने लगते हैं - ताकि आप जो भी संदर्भ चाहते हैं उसके प्रारंभ/अंत के लिए पीछे की तरफ खोजना चाहें।

(when "another attempt to accept certain words flyspell/ispell/aspell flags as incorrect" 
    (defun flyspell-ignore-WordNumber99-stuff/ag (beg end info) 
    (save-excursion 
     (goto-char beg) 
     (cond 
    ((or 
     (looking-at "\\bWord1\\b") 
     (looking-at "\\bWord99Foo\\b") 
     ) 
     t) 
    (t nil) 
    ) 
    ) 
    ) 
) 

(add-hook 'flyspell-incorrect-hook 'flyspell-ignore-WordNumber99-stuff/ag) 
संबंधित मुद्दे

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