Vim ( vim-latex , AutomaticLatexPlugin को युगल कहना) के लिए कई टेक्स प्लगइन्स हैं ।
इन के बीच प्रदान की गई कार्यशीलता में अंतर क्या हैं (जिन्हें मैंने नाम दिया है और संभवतः अन्य) TeX प्लगइन्स?
यहाँ एसओ पर संबंधित प्रश्नों के एक जोड़े है:
Vim ( vim-latex , AutomaticLatexPlugin को युगल कहना) के लिए कई टेक्स प्लगइन्स हैं ।
इन के बीच प्रदान की गई कार्यशीलता में अंतर क्या हैं (जिन्हें मैंने नाम दिया है और संभवतः अन्य) TeX प्लगइन्स?
यहाँ एसओ पर संबंधित प्रश्नों के एक जोड़े है:
जवाबों:
मैं गहराई से तुलना प्रदान नहीं करूंगा, क्योंकि मुझे केवल विभिन्न प्लगइन्स के साथ सीमित अनुभव है। मुझे कुछ प्लग इन अच्छी तरह से पता है ( LaTeX-Box और LaTeX-Suite ), और मैं एक प्लगइन को बहुत अच्छी तरह से जानता हूं, क्योंकि मैं इसे खुद विकसित कर रहा हूं: vimtex । इस प्रकार, मैं ज्यादातर विमटेक्स के बारे में लिखूंगा। हालाँकि, मैं पहले कुछ संदर्भों को इंगित करूँगा जो दूसरों के लिए रूचि के हो सकते हैं।
वहाँ रहे हैं एक बहुत विम के लिए प्लग इन की। ये वे हैं जिन्हें मैंने कम से कम अर्ध लोकप्रिय होने के रूप में पहचाना है:
पर tex.stackexchange.com , वहाँ एक है विशाल सूची LaTeX संपादकों और IDEs की। यह सामान्य रूप से एक अच्छा अवलोकन देता है, लेकिन यह विम के लिए प्लगइन्स के कुछ अवलोकन भी प्रदान करता है:
vimtex LaTeX-Box पर आधारित है। कुछ समय के लिए मैंने एलटीएक्स-बॉक्स में बग फिक्स और अपडेट में योगदान देने के बाद इसे शुरू किया। मुझे एहसास हुआ कि यदि मैं इसे स्क्रैच से लिखता हूं तो प्लगइन को और अधिक आधुनिक तरीके से लिखा जा सकता है। मैंने पहली बार सबसे अधिक सुविधाएँ छीन लीं और अधिक मजबूत और मॉड्यूलर "इंजन" का निर्माण किया। मैंने तब सुविधाएँ जोड़ीं, और मुझे लगता है कि आज इसमें लाटेकएक्स-बॉक्स की अधिकांश सुविधाएँ हैं और फिर कुछ हैं।
सुविधाओं की पूरी सूची देने के बजाय ( इसके लिए यहां देखें ), मैं इसके बजाय विमटेक्स और अन्य प्लगइन्स के बीच के कुछ अंतरों को इंगित करने का प्रयास करूंगा। हालाँकि, मैं कुछ साहसिक दावे करना चाहता हूँ:
चूंकि विमटेक्स LaTeX-Box पर आधारित है, इसलिए स्पष्ट रूप से इसके समान सिद्धांत हैं। विचार यह है कि चीजों को सरल रखा जाए और समस्याओं को हल करने के लिए thare पहले से ही अन्य, बेहतर प्लगइन्स द्वारा हल नहीं किया जाता है। यह लाटेकस दस्तावेजों को संकलित करने के लिए लेटेक्समेक का उपयोग करता है , और यह सिंटैक्स हाइलाइटिंग के लिए आंतरिक विम प्लगइन पर बनाता है।
वर्तमान में LaTeX-Box में एक महत्वपूर्ण विशेषता है जो विमटेक्स में गायब है: कॉलबैक के साथ एकल-शॉट संकलन । इसका कारण यह है कि यह सुविधा vimtex में नहीं है, क्योंकि यह जटिल है, और यह कि मुझे इसे लागू करने का कोई तरीका नहीं मिला जो कि मेरी अपनी पसंद के लिए काफी सरल है (सुझावों का स्वागत है, कृपया मुद्दों को खोलने या अनुरोधों को खींचने में संकोच न करें )।
विमटेक्स और लाटेएक्स-सुइट के बीच मुख्य अंतर शायद यह है कि विमटेक्स विम के अंदर लाटेक्स के लिए एक पूर्ण आईडीई को लागू करने की कोशिश नहीं करता है। उदाहरण के लिए:
latexmk
संकलन त्रुटियों पर त्वरित प्रतिक्रिया प्राप्त करने के लिए कॉलबैक सुविधा के साथ संकलन के लिए उपयोग करता हैमैं तुलना नहीं कर सकता, क्योंकि विम-लाटेक एकमात्र लॉटेक्स प्लगइन है जिसका मैंने उपयोग किया है। मैं लगभग एक साल से विम-लाटेक्स का उपयोग कर रहा हूं। इसलिए मैं अकेले विम-लाटेक के बारे में बात करूंगा।
रहे हैं कई विम लेटेक्स में मौजूद सुविधाओं। मुझे वे सब याद नहीं हैं। मैं सिर्फ उन विशेषताओं के बारे में बात करूंगा जो मैं जानता हूं और लगातार उपयोग करता हूं।
नोट: ये मेरे सीमित उपयोगकर्ता अनुभव हैं , जो बहुत भ्रामक हो सकते हैं । मैं एक अनुभवी विम उपयोगकर्ता नहीं हूँ। और मुझे vimscript के बारे में कुछ भी नहीं पता है।
<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 खोज की बात है।
कुल मिलाकर, मुझे लगता है कि यह अच्छी तरह से काम करेगा यदि आप जानवर को वश में करने के लिए कुछ समय निवेश करने को तैयार हैं। कहा जा रहा है कि, मेरे पास समय और पर्याप्त ज्ञान था, मैं निश्चित रूप से ओवरहेड सुविधाओं को पतला कर दूंगा और अन्य प्लगइन्स के साथ एकीकरण की संभावनाओं का पता लगाऊंगा।
vimtex
साथ-साथ काम कर सकते हैंLatex-Suite
, जिसका अर्थ है कि आप एक ही समय में दो प्लगइन्स में से सर्वश्रेष्ठ प्राप्त कर सकते हैं । :)