Які відмінності між плагінами LaTeX?


42

Існує ряд плагінів Tex для vim ( vim-latex , AutomaticLatexPlugin, щоб сказати пару).

Які відмінності в наданих функціоналах між цими (я назвав і, можливо, іншими) плагінами TeX?


Ось пара споріднених питань щодо SO:

Відповіді:


28

Я не буду наводити поглиблене порівняння, оскільки у мене лише обмежений досвід роботи з різними плагінами. Я добре знаю пару плагінів ( LaTeX-Box і LaTeX-Suite ), і я дуже добре знаю один плагін, оскільки сам розробляю його: vimtex . Таким чином, я здебільшого пишу про vimtex. Однак спершу зазначу деякі посилання, які можуть зацікавити інших.

Деякі огляд та посилання

Для Vim є багато плагінів. Це ті, кого я визнав принаймні напівпопулярними:

На tex.stackexchange.com є величезний список редакторів LaTeX та IDE. Він дає хороший огляд загалом, але також надає деякий огляд плагінів для Vim:

vimtex

vimtex заснований на LaTeX-Box. Це почалося після того, як я деякий час додавав виправлення помилок та оновлення до LaTeX-Box. Я зрозумів, що плагін можна написати набагато сучаснішим чином, якби я написав його з нуля. Я спершу позбувся більшості функцій і побудував більш надійний і модульний "двигун". Потім я додав функції, і, думаю, сьогодні він має більшість функцій LaTeX-Box, а потім і деякі.

Замість того, щоб наводити повний список функцій (див. Натомість тут для цього ), я скоріше спробую вказати на деякі відмінності між vimtex та іншими плагінами. Однак я хочу надати кілька сміливих тверджень:

  • vimtex - найсучасніший плагін Vim для LaTeX, доступний сьогодні
  • Код є високоякісним, і його зараз активно підтримує я
  • Плагін здебільшого стабільний, хоча деякі функції все ще розробляються (і як такі можуть бути змінені та оновлені)

vimtex vs LaTeX-Box

Оскільки vimtex заснований на LaTeX-Box, він, очевидно, має схожі принципи. Ідея полягає в тому, щоб зробити прості речі і вирішити проблеми, які не вирішуються іншими, кращими плагінами. Він використовує latexmk для складання документів LaTeX, і він спирається на внутрішній плагін Vim для виділення синтаксису.

Наразі в LaTeX-Box є одна важлива особливість, якої немає у vimtex: Компіляція з одним знімком із зворотним дзвінком . Причина, що ця функція не в vimtex, полягає лише в тому, що вона є складною, і що я ніколи не знайшов спосіб її впровадження, який є досить простим для моїх власних уподобань (пропозиції вітаються. Будь ласка, не соромтеся відкривати проблеми або тягнути запити ).

vimtex vs LaTeX-Suite

Основна відмінність vimtex від LaTeX-Suite, ймовірно, полягає в тому, що vimtex не намагається реалізувати повноцінний IDE для LaTeX всередині Vim. Наприклад:

  • vimtex не забезпечує повну функції сниппета, тому що це краще обробляється UltiSnips або neosnippet або аналогічні сніпети двигунами.
  • vimtex ґрунтується на принципах Vim: Він надає текстові об'єкти для середовищ, вбудовану математику, він пропонує рухи для розділів та абзаців
  • vimtex використовує latexmkдля компіляції з функцією зворотного виклику, щоб отримати миттєвий зворотній зв’язок про помилки компіляції
  • vimtex дуже модульний: якщо вам не подобається функція, ви можете вимкнути її.

Просто хочемо зрозуміти: vimtexможна працювати поруч Latex-Suite, а це означає, що ви можете отримати найкраще з двох плагінів одночасно . :)
llinfeng

12

Я не можу порівняти, оскільки Vim-LaTeX - єдиний плагін LaTeX, який я використовував. Я використовую Vim-LaTeX майже рік. Тому я поговорю лише про Vim-LaTeX.

У Vim-LaTeX є багато функцій. Я не пам’ятаю їх усіх. Я просто поговорю про функції, які я знаю і використовую постійно.

Примітка. Це мій обмежений досвід користувачів , який може бути дуже оманливим . Я не досвідчений користувач Vim. І я нічого не знаю про vimscript.

IMAP () та <C-j>стрибки

IMAP()функції та функції <C-j>стрибків надаються окремо як плагін imaps.vimу пакеті Vim-LaTeX. Вони є потужними функціями і можуть бути дуже корисними навіть тоді, коли ви не пишете LaTeX.

  • IMAP()Функція забезпечує більш природний спосіб зробити відображення режимів відображення та шаблонів взагалі, ніж вбудований imapта iabbrev, IMO.

  • <C-j>стрибки використовуються багатьма функціями завершення Vim-LaTeX. Точку стрибка позначається символом <++>.

  • Вбудовані відображення клавіш в режимі вставки реалізуються як 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плагіна є те, що це глобальний плагін, який передбачає його потенційне використання поза LaTeX. Дійсно, я використовую <++>і <C-j>стрибки (поєднуючись з іншими плагінами) для створення шаблонів фрагментів коду в C.

<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{<++>}{<++>}<++>"
    
  • У Insert / Normal Mode, коли курсор НЕ прикріплений ні до чого (він же в поодинці ), натискання <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>

Переглядайте PDF, вперед та назад в режимі перегляду між Vim та переглядачем PDF

Це безладна і складна тема. З певним переглядачем PDF та певною долею це може бути дуже просто. Але це головним чином пошук Google.

Пропозиції

  • Ви повинні знайти баланс між способом LaTeX і Vim-LaTeX.
  • Vim-LaTeX - це зовсім не легка вага. Є деякі функції та / або відображення ключів, які ви, можливо, ніколи не будете використовувати, і вам доведеться їх вручну замінити.
  • Ви використовуєте Vim. Ви знаєте, що означає терпіння . :-)

В цілому, я думаю, що це буде добре, якщо ви готові вкласти трохи часу, щоб приручити звіра. Якщо говорити, якщо я маю час та адекватні знання, я, безумовно, усуну головні функції та вивчу потенціали інтеграції з іншими плагінами.

Список літератури

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.