2013-06-11 7 views
7

मैं एएमसीटीएक्स के साथ संयोजन में Emacs का उपयोग $ का उपयोग करके कई इनलाइन गणित के साथ पांडुलिपियों को संपादित करने के लिए करता हूं। जब स्वचालित भरना (उदाहरण के लिए, एम-क्यू के साथ), Emacs अक्सर इन इनलाइन गणित वातावरण को उन पदों पर तोड़ता है जो पढ़ने की गतिशीलता को परेशान करते हैं (उदाहरण के लिए, सबस्क्रिप्ट्स या इसी तरह)।टीएक्स इनलाइन गणित में लाइन ब्रेकिंग से Emacs को रोकें

क्या एमाक्स को एक नई लाइन में पूरे $…$ पर्यावरण को तोड़ने को प्राथमिकता देने के लिए कहने का कोई तरीका है यदि वह तोड़ने से रोकेगा? अधिक विशेष रूप से, यदि गणित में तोड़ना होगा, तो पूरे वातावरण को एक नई रेखा में ले जाया जाना चाहिए जिसे अलग नहीं किया जाना चाहिए।

एक उदाहरण:

Lorem ipsum dolor sit amet, consectetur adipisici elit, sed $a^2 + b^2 = c^2$ eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam. 

परिणाम चाहिए

Lorem ipsum dolor sit amet, consectetur adipisici elit, sed 
$a^2 + b^2 = c^2$ eiusmod tempor incidunt ut labore et dolore magna 
aliqua. Ut enim ad minim veniam. 

उत्तर

5

प्रयास करें:

(add-hook 'LaTeX-mode-hook 
      (lambda() 
      (add-to-list 'fill-nobreak-predicate 'texmathp))) 

अपने .emacs और पुनः आरंभ Emacs में रखें यह।

+0

धन्यवाद, यह करीब है! यह अच्छा है कि यह कई लाइनों पर फैले छोटे गणित वातावरण एकत्र करता है। यह लागत पर आता है, हालांकि, बहुत लंबी लाइनों को _explicitely_ नहीं तोड़ा जा सकता है (मेरा मतलब है कि 'एम-क्यू' दबाते समय स्पष्ट ब्रेक हटा दिए जाते हैं)। क्या आप जानते हैं कि इसे कैसे शामिल किया जाए। (हालांकि यह मुश्किल है; मैं इसे संक्षिप्त तरीके से अधिक सटीक नहीं बता सकता।) – Xlea

+1

मुझे यकीन नहीं है कि मैं समझता हूं कि "स्पष्ट ब्रेक" से आपका क्या मतलब है। यदि आप केवल उस पाठ की स्थिति का मतलब रखते हैं जहां आपने 'आरईटी' दबाया है, तो, उन कार्यों को भरने वाले emacs द्वारा किए गए स्वचालित लाइन ब्रेक से अलग करने का कोई तरीका नहीं है। हालांकि, आप उस लाइन ब्रेक को 'एम-क्यू' द्वारा बदलने से रोकने के लिए लाइन के अंत में टिप्पणी प्रतीक '%' जोड़ सकते हैं। – mk1

+0

मेरा मतलब यह है कि यदि लंबी गणित (एक पंक्ति से अधिक) पहले से ही एक अलग रेखा पर है और टूटा हुआ है (जिसे भी), तो मैं Emacs को बाद की रेखाओं को खींचना नहीं चाहता (यानी, अगर मैं एक लाइनब्रेक को हटा नहीं सकता एक लाइन बहुत लंबी होगी)। मैं पहले से ही '%' का उपयोग कर रहा हूं लेकिन यह बहुत सुविधाजनक नहीं है। – Xlea

1

में आप की तरह कुछ कर सकते हैं:

(add-hook 'LaTeX-mode-hook 
      (lambda() 
      (add-hook 'fill-nobreak-predicate 'my-latex-fill-nobreak))) 

और फिर एक समारोह my-latex-fill-nobreak जो गैर शून्य रिटर्न अगर आप को परिभाषित एक लघु गणित पर्यावरण के अंदर, उदाहरण के लिए की तरह कुछ:

(defun my-latex-fill-nobreak() 
    (save-excursion 
    (when (search-backward "$" (- (point) 20) t) 
     ;; We found a nearby $. Now let's see if it's an opening $ 
     ;; rather than a closing one. Using font-lock properties is 
     ;; a hack, but it might be good enough. Apparently (texmathp) 
     ;; could be a better choice. 
     (eq (get-text-property (point) 'face) 'font-latex-math-face)))) 
+1

आप गणित मोड में है या नहीं, यह पता लगाने के लिए आप 'texmathp' का उपयोग कर सकते हैं। – mk1

+0

मैंने इसे ~/.emacs में जोड़ने की कोशिश की लेकिन ऐसा कोई प्रभाव नहीं प्रतीत होता। – Xlea

+0

शायद regexp खोज में unquoted $ की वजह से। मैंने इसे बदले में एक गैर-रेगेक्सपी खोज का उपयोग करने के लिए बदल दिया, जो आपकी समस्या को ठीक कर सकता है। – Stefan

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