LaTeX प्लगइन्स के बीच अंतर क्या हैं?


42

Vim ( vim-latex , AutomaticLatexPlugin को युगल कहना) के लिए कई टेक्स प्लगइन्स हैं ।

इन के बीच प्रदान की गई कार्यशीलता में अंतर क्या हैं (जिन्हें मैंने नाम दिया है और संभवतः अन्य) TeX प्लगइन्स?


यहाँ एसओ पर संबंधित प्रश्नों के एक जोड़े है:

जवाबों:


28

मैं गहराई से तुलना प्रदान नहीं करूंगा, क्योंकि मुझे केवल विभिन्न प्लगइन्स के साथ सीमित अनुभव है। मुझे कुछ प्लग इन अच्छी तरह से पता है ( LaTeX-Box और LaTeX-Suite ), और मैं एक प्लगइन को बहुत अच्छी तरह से जानता हूं, क्योंकि मैं इसे खुद विकसित कर रहा हूं: vimtex । इस प्रकार, मैं ज्यादातर विमटेक्स के बारे में लिखूंगा। हालाँकि, मैं पहले कुछ संदर्भों को इंगित करूँगा जो दूसरों के लिए रूचि के हो सकते हैं।

कुछ अवलोकन और संदर्भ

वहाँ रहे हैं एक बहुत विम के लिए प्लग इन की। ये वे हैं जिन्हें मैंने कम से कम अर्ध लोकप्रिय होने के रूप में पहचाना है:

पर tex.stackexchange.com , वहाँ एक है विशाल सूची LaTeX संपादकों और IDEs की। यह सामान्य रूप से एक अच्छा अवलोकन देता है, लेकिन यह विम के लिए प्लगइन्स के कुछ अवलोकन भी प्रदान करता है:

vimtex

vimtex LaTeX-Box पर आधारित है। कुछ समय के लिए मैंने एलटीएक्स-बॉक्स में बग फिक्स और अपडेट में योगदान देने के बाद इसे शुरू किया। मुझे एहसास हुआ कि यदि मैं इसे स्क्रैच से लिखता हूं तो प्लगइन को और अधिक आधुनिक तरीके से लिखा जा सकता है। मैंने पहली बार सबसे अधिक सुविधाएँ छीन लीं और अधिक मजबूत और मॉड्यूलर "इंजन" का निर्माण किया। मैंने तब सुविधाएँ जोड़ीं, और मुझे लगता है कि आज इसमें लाटेकएक्स-बॉक्स की अधिकांश सुविधाएँ हैं और फिर कुछ हैं।

सुविधाओं की पूरी सूची देने के बजाय ( इसके लिए यहां देखें ), मैं इसके बजाय विमटेक्स और अन्य प्लगइन्स के बीच के कुछ अंतरों को इंगित करने का प्रयास करूंगा। हालाँकि, मैं कुछ साहसिक दावे करना चाहता हूँ:

  • vimtex आज उपलब्ध LaTeX के लिए सबसे आधुनिक विम प्लगइन है
  • कोड उच्च गुणवत्ता वाला है और वर्तमान में इसे सक्रिय रूप से स्वयं द्वारा बनाए रखा जा रहा है
  • प्लगइन ज्यादातर स्थिर है, भले ही कुछ विशेषताएं अभी भी विकसित की जा रही हैं (और जैसा कि परिवर्तन और अपडेट के अधीन हो सकता है)

विमटेक्स बनाम लाटेक्स-बॉक्स

चूंकि विमटेक्स LaTeX-Box पर आधारित है, इसलिए स्पष्ट रूप से इसके समान सिद्धांत हैं। विचार यह है कि चीजों को सरल रखा जाए और समस्याओं को हल करने के लिए thare पहले से ही अन्य, बेहतर प्लगइन्स द्वारा हल नहीं किया जाता है। यह लाटेकस दस्तावेजों को संकलित करने के लिए लेटेक्समेक का उपयोग करता है , और यह सिंटैक्स हाइलाइटिंग के लिए आंतरिक विम प्लगइन पर बनाता है।

वर्तमान में LaTeX-Box में एक महत्वपूर्ण विशेषता है जो विमटेक्स में गायब है: कॉलबैक के साथ एकल-शॉट संकलन । इसका कारण यह है कि यह सुविधा vimtex में नहीं है, क्योंकि यह जटिल है, और यह कि मुझे इसे लागू करने का कोई तरीका नहीं मिला जो कि मेरी अपनी पसंद के लिए काफी सरल है (सुझावों का स्वागत है, कृपया मुद्दों को खोलने या अनुरोधों को खींचने में संकोच न करें )।

विमटेक्स बनाम लाटेक्स-सुइट

विमटेक्स और लाटेएक्स-सुइट के बीच मुख्य अंतर शायद यह है कि विमटेक्स विम के अंदर लाटेक्स के लिए एक पूर्ण आईडीई को लागू करने की कोशिश नहीं करता है। उदाहरण के लिए:

  • vimtex पूर्ण स्निपेट सुविधा प्रदान नहीं करता है, क्योंकि यह UltiSnips या neosnippet या समान स्निपेट इंजन द्वारा बेहतर तरीके से नियंत्रित किया जाता है ।
  • विमटेक्स विम सिद्धांतों पर बनाता है: यह पर्यावरण के लिए टेक्स्ट ऑब्जेक्ट प्रदान करता है, इनलाइन गणित, यह वर्गों और पैराग्राफ के लिए प्रेरणा प्रदान करता है
  • vimtex latexmkसंकलन त्रुटियों पर त्वरित प्रतिक्रिया प्राप्त करने के लिए कॉलबैक सुविधा के साथ संकलन के लिए उपयोग करता है
  • vimtex बहुत मॉड्यूलर है: यदि आपको कोई सुविधा पसंद नहीं है, तो आप इसे बंद कर सकते हैं।

बस इसे स्पष्ट करना चाहते हैं: vimtexसाथ-साथ काम कर सकते हैं Latex-Suite, जिसका अर्थ है कि आप एक ही समय में दो प्लगइन्स में से सर्वश्रेष्ठ प्राप्त कर सकते हैं । :)
लेलिनफेंग

12

मैं तुलना नहीं कर सकता, क्योंकि विम-लाटेक एकमात्र लॉटेक्स प्लगइन है जिसका मैंने उपयोग किया है। मैं लगभग एक साल से विम-लाटेक्स का उपयोग कर रहा हूं। इसलिए मैं अकेले विम-लाटेक के बारे में बात करूंगा।

रहे हैं कई विम लेटेक्स में मौजूद सुविधाओं। मुझे वे सब याद नहीं हैं। मैं सिर्फ उन विशेषताओं के बारे में बात करूंगा जो मैं जानता हूं और लगातार उपयोग करता हूं।

नोट: ये मेरे सीमित उपयोगकर्ता अनुभव हैं , जो बहुत भ्रामक हो सकते हैं । मैं एक अनुभवी विम उपयोगकर्ता नहीं हूँ। और मुझे vimscript के बारे में कुछ भी नहीं पता है।

IMAP () और <C-j>जंपिंग

IMAP()फ़ंक्शन और <C-j>जंपिंग फ़ंक्शन को imaps.vimविम-लाटेक्स बंडल में एक प्लगइन के रूप में अलग से प्रदान किया जाता है। वे शक्तिशाली विशेषताएं हैं और तब भी बहुत उपयोगी हो सकती हैं जब आप LaTeX नहीं लिख रहे हों।

  • IMAP()समारोह से निर्मित सामान्य रूप में मोड मैपिंग और templating डालने करने के लिए एक और अधिक प्राकृतिक तरीका प्रदान करता है imapऔर iabbrev, IMO।

  • <C-j>जम्पिंग का उपयोग कई विम-लाटेक्स पूर्ण सुविधाओं द्वारा किया जाता है। एक जंपिंग पॉइंट द्वारा इंगित किया जाता है <++>

  • बिल्ट-इन इन्सर्ट मोड की मैपिंग IMAP()कॉल के रूप में कार्यान्वित की जाती है। उदाहरण के लिए, आप फ़ाइल IMAP()में उपयोगी कॉल की एक लंबी सूची पा सकते हैं main.vim:

    call IMAP ('__', '_{<++>}<++>', "tex")
    call IMAP ('()', '(<++>)<++>', "tex")
    call IMAP ('[]', '[<++>]<++>', "tex")
    call IMAP ('{}', '{<++>}<++>', "tex")
    ...
    call IMAP ('((', '\left( <++> \right)<++>', "tex")
    call IMAP ('[[', '\left[ <++> \right]<++>', "tex")
    call IMAP ('{{', '\left\{ <++> \right\}<++>', "tex")
    ...
    

फिर जब आप कहते हैं (), तो कर्सर पहले के स्थान पर, पेरेशियस के बीच स्वचालित रूप से निवास करेगा <++>। आपके अंदर टाइपिंग समाप्त होने के बाद, आप किक <C-j>और बैंग करते हैं, कर्सर पैरेन्थेस से बाहर निकल जाएगा और आप बस आगे टाइप करते रहेंगे। एक बार जब आप इसे करने के लिए उपयोग किया जाता है, यह एक टाइपिंग प्रवाह बनाने के लिए शुरू होता है जो थोड़े नशे की लत है ...

आप एक \left \rightजोड़ी के ऊपर से देखते हैं कि इसके शुरुआती ब्रैकेट के दोहरे स्ट्रोक के साथ आसानी से टाइप किया जा सकता है। और <C-j>जंपिंग टाइपिंग फ्लो बनाता है।

एक बड़ी गड़बड़ IMAP()और <C-j>बात यह है कि वे आपके अंतिम बदलाव के इतिहास को गड़बड़ कर देते हैं । (एक बग मैं लंबे समय तक ठीक करना चाहता हूं।) इसलिए, .यदि आपके "अंतिम परिवर्तन" में ये फ़ंक्शन कॉल शामिल हैं , तो आप अपने पिछले परिवर्तन को फिर से करने की कोशिश करते समय अप्रत्याशित व्यवहार का सामना कर सकते हैं।

  • आप IMAP()साधारण कुंजी मैपिंग से लेकर अधिक जटिल टेम्प्लेटिंग तक सभी प्रकार के मैपिंग का उपयोग कर सकते हैं । यहाँ मेरे मैपिंग के कुछ उदाहरण हैं ( ftplugin/tex.vim):

    call IMAP('*EEQ',"\\begin{equation*}\<CR><++>\<CR>\\end{equation*}<++>",'tex')
    call IMAP('DEF',"\\begin{definition}[<++>]\<CR><++>\<CR>\\end{definition}<++>",'tex')
    call IMAP('BIC','\binom{<++>}{<++>}<++>','tex')
    call IMAP('PVERB','\PVerb{<++>}<++>','tex')
    call IMAP('VERB','\verb|<++>|<++>','tex')
    
  • imaps.vimप्लगइन के बारे में एक दिलचस्प तथ्य यह है कि यह एक वैश्विक प्लगइन है, जो लाटेक्स से परे इसके संभावित उपयोग का अर्थ है। दरअसल, मैं उपयोग कर <++>और <C-j>jumppings (अन्य प्लग-इन के साथ संयोजन) सी में कोड स्निपेट टेम्पलेट्स के निर्माण के लिए

<F5> <F7> कमांड और वातावरण का सम्मिलन

इसका एक नुकसान IMAP()यह है कि कुंजी संयोजन का उपयोग अब सामान्य पाठ में नहीं किया जा सकता है (जब तक कि आप मानचित्रण को पूर्ववत न करें u)। उन मामलों में जो आप अपनी इच्छानुसार मानचित्रण को ट्रिगर करना चाहते हैं, <F5>और <F7>काम में आते हैं। इन दो चाबी के लिए उपयोग किया जाता है ट्रिगर वातावरण और इनलाइन क्रमशः प्रविष्टि आदेशों। और वे उपयोगकर्ता से मोड और अनुकूलन के आधार पर अलग-अलग व्यवहार करते हैं।

  • इंसर्ट / नॉर्मल मोड में, जब कर्सर किसी शब्द को अटैच करता है या शब्द में होता है, तो <F5>डिफ़ॉल्ट रूप से दबाने पर फॉर्म का बेसिक एनवायरनमेंट डाला जाता है

    \begin{word}
    <Cursor>
    \end{word}<++>
    

    शब्द के आधार पर; <F7>डिफ़ॉल्ट रूप से दबाने \word{}<++>पर शब्द के आधार पर फॉर्म की एक बुनियादी इनलाइन कमांड डाली जाएगी ।

  • "डिफ़ॉल्ट रूप से", मेरा मतलब है कि आप एक विशिष्ट शब्द के व्यवहार को अनुकूलित कर सकते हैं जब <F5>/ से ट्रिगर किया गया हो <F7>। यहाँ मेरी कुछ सेटिंग्स ( .vimrc) हैं:

    let g:Tex_Com_newcommand = "\\newcommand{<++>}[<++>]{<++>}<++>"
    let g:Tex_Com_latex = "{\\LaTeX}<++>"
    let g:Tex_Com_D = "\\D{<++>}{<++>}<++>"
    
  • इंसर्ट / नॉर्मल मोड में, जब कर्सर किसी भी चीज़ ( अकेले उर्फ ) से जुड़ा नहीं होता है , तो प्रेस / पर्यावरण को चुनने के लिए मेनू का संकेत देगा। या आप तल पर वांछित वातावरण / कमांड का नाम टाइप कर सकते हैं। व्यक्तिगत रूप से, मैं शायद ही कभी / इस तरह का उपयोग करता हूं ।<F5><F7><F5><F7>

  • पाठ का एक टुकड़ा चुनने के बाद प्रेस <F5>/ <F7>पाठ लपेटने के लिए एक मेनू को संकेत देगा । फिर चयनित पाठ आपके द्वारा चयनित या टाइप किए गए वातावरण / कमांड में लपेटा जाएगा।

  • इंसर्ट / नॉर्मल मोड में, जब कर्सर किसी वातावरण / कमांड के दायरे में होता है, तो प्रेस पर्यावरण / कमांड<Shift>+<F5>/<F7> को बदलने के लिए एक मेनू को संकेत देगा ।

विविध कुंजी मैपिंग

  • ग्रीक पत्र। `aकरने के लिए `zऔर इसी राजधानियों।
  • प्रतीक की तरह है `8के लिए \infty, `<के लिए \le, `Iके लिए \int_{<++>}^{<++>}<++>, आदि
  • "दो बार दबाने पर TeX डबल कोट्स की एक जोड़ी मिलती है। तो शाब्दिक "चरित्र टाइप करने के लिए , आपको उपयोग करना होगा।
  • कई गणन वातावरण में दबाने से उपयुक्त \itemटैग सम्मिलित किया जाएगा ।
  • आप \left \rightजोड़ी में गणित के चयनित भाग को नेत्रहीन लपेट सकते हैं `(, `[और `{
  • तह अनुकूलन योग्य है। तीन वैश्विक चर नियंत्रण क्या तह किया जा सकता: Tex_FoldedSections, Tex_FoldedMisc, और Tex_FoldedEnvironments

कभी-कभी बिल्ट-इन मैपिंग बहुत दूर चली गई है या आप जो चाहते हैं उसे छोड़ नहीं रहे हैं। आप उन्हें पुनर्परिभाषित करके निर्मित मैपिंग को ओवरराइड कर सकते हैं after/ftplugin/tex.vim:

call IMAP('`|','\abs{<++>}<++>','tex')
call IMAP('ETE',"\\begin{table}\<CR>\\centering\<CR>\\caption{<+Caption text+>}\<CR>\\label{tab:<+label+>}\<CR>\\begin{tabular}{<+dimensions+>}\<CR><++>\<CR>\\end{tabular}\<CR>\\end{table}<++>",'tex')
call IMAP('==','==','tex')
call IMAP('`\','`\','tex')

एकाधिक संकलन इंजन सेट करें

मुझे हमेशा इंजन pdflatexऔर xelatexइंजन के बीच स्विच करने की आवश्यकता होती है । इस प्रकार, मेरे पास निम्नलिखित पंक्तियाँ हैं .vimrc:

"switch to pdflatex
function SetpdfLaTeX()
    let g:Tex_CompileRule_pdf = 'pdflatex --interaction=nonstopmode -synctex=1 -src-specials $*'
endfunction
noremap <Leader>lp :<C-U>call SetpdfLaTeX()<CR>

"switch to xelatex
function SetXeLaTeX()
    let g:Tex_CompileRule_pdf = 'xelatex --interaction=nonstopmode -synctex=1 -src-specials $*'
endfunction
noremap <Leader>lx :<C-U>call SetXeLaTeX()<CR>

पीडीएफ, फॉरवर्ड और बैकवर्ड सर्च को विम और पीडीएफ दर्शक के बीच देखें

यह एक गन्दा और जटिल विषय है। पीडीएफ दर्शक और भाग्य की एक निश्चित राशि के साथ , यह बहुत आसान हो सकता है। लेकिन यह मुख्य रूप से Google खोज की बात है।

सुझाव

  • आपको अपना बैलेंस LaTeX के रास्ते और Vim-LaTeX के बीच का रास्ता खोजना चाहिए।
  • विम-लाटेक्स कोई हल्का-फुल्का वजन नहीं है। कुछ विशेषताएं और / या कुंजी मैपिंग हैं जिनका आप संभवतः उपयोग नहीं करेंगे और आपको उन्हें मैन्युअल रूप से ओवरराइड करना होगा।
  • आप विम का उपयोग करें। आप जानते हैं कि धैर्य का क्या मतलब है। :-)

कुल मिलाकर, मुझे लगता है कि यह अच्छी तरह से काम करेगा यदि आप जानवर को वश में करने के लिए कुछ समय निवेश करने को तैयार हैं। कहा जा रहा है कि, मेरे पास समय और पर्याप्त ज्ञान था, मैं निश्चित रूप से ओवरहेड सुविधाओं को पतला कर दूंगा और अन्य प्लगइन्स के साथ एकीकरण की संभावनाओं का पता लगाऊंगा।

संदर्भ

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.