Jakie są różnice między wtyczkami LaTeX?


Odpowiedzi:


28

Nie przedstawię dogłębnego porównania, ponieważ mam ograniczone doświadczenie z różnymi wtyczkami. Znam dobrze kilka wtyczek ( LaTeX-Box i LaTeX-Suite ) i znam bardzo dobrze jedną wtyczkę, ponieważ sam ją opracowuję: vimtex . Dlatego głównie napiszę o vimtex. Najpierw jednak wskażę odniesienia, które mogą zainteresować innych.

Niektóre informacje ogólne i referencje

Istnieje wiele wtyczek dla Vima. Oto te, które uznałem za co najmniej częściowo popularne:

Na tex.stackexchange.com znajduje się ogromna lista edytorów LaTeX i IDE. Daje ogólnie ładny przegląd, ale także przegląd wtyczek dla Vima:

vimtex

vimtex jest oparty na LaTeX-Box. Zaczęło się po tym, jak przez jakiś czas dodawałem poprawki błędów i aktualizacje do LaTeX-Box. Uświadomiłem sobie, że wtyczka mogłaby zostać napisana w znacznie bardziej nowoczesny sposób, gdyby napisał ją od zera. Najpierw usunąłem większość funkcji i zbudowałem bardziej solidny i modułowy „silnik”. Potem dodałem funkcje i myślę, że dziś ma większość funkcji LaTeX-Box, a potem niektóre.

Zamiast podawać pełną listę funkcji (zobacz zamiast tego tutaj ), raczej spróbuję wskazać niektóre różnice między vimtex i innymi wtyczkami. Chcę jednak przedstawić kilka odważnych roszczeń:

  • vimtex to najnowocześniejsza wtyczka Vim do LaTeX dostępna obecnie
  • Kod jest wysokiej jakości i obecnie jest aktywnie utrzymywany przeze mnie
  • Wtyczka jest w większości stabilna, mimo że niektóre funkcje są wciąż rozwijane (i jako takie mogą podlegać zmianom i aktualizacjom)

vimtex vs LaTeX-Box

Ponieważ vimtex jest oparty na LaTeX-Box, ma oczywiście podobne zasady. Chodzi o to, aby zachować prostotę i rozwiązać problemy, które nie zostały jeszcze rozwiązane przez inne, lepsze wtyczki. Wykorzystuje lateks do kompilacji dokumentów LaTeX i opiera się na wewnętrznej wtyczce Vima do podświetlania składni.

Obecnie w vimtex brakuje jednej ważnej funkcji LaTeX-Box: Kompilacja pojedynczego strzału z wywołaniem zwrotnym . Powodem, dla którego ta funkcja nie jest dostępna w vimtex, jest po prostu to, że jest skomplikowana i nigdy nie znalazłem sposobu na jej wdrożenie, który byłby wystarczająco prosty dla moich własnych preferencji (sugestie są mile widziane, nie wahaj się otwierać problemów lub wyciągać wnioski ).

vimtex vs LaTeX-Suite

Główną różnicą między vimtex a pakietem LaTeX jest prawdopodobnie to, że vimtex nie próbuje wdrożyć pełnego IDE dla LaTeX w Vimie. Na przykład:

  • vimtex nie zapewnia pełnej funkcji fragmentu, ponieważ lepiej jest to obsługiwane przez UltiSnips lub neosnippet lub podobne silniki fragmentów.
  • vimtex opiera się na zasadach Vima: zapewnia obiekty tekstowe dla środowisk, matematykę wbudowaną, zapewnia ruchy dla sekcji i akapitów
  • vimtex używa latexmkdo kompilacji z funkcją wywołania zwrotnego, aby uzyskać natychmiastową informację zwrotną na temat błędów kompilacji
  • vimtex jest bardzo modułowy: jeśli nie podoba ci się funkcja, możesz ją wyłączyć.

Po prostu chcę to wyjaśnić: vimtexmożna pracować obok siebie Latex-Suite, co oznacza, że ​​możesz uzyskać najlepszą z dwóch wtyczek jednocześnie . :)
llinfeng 21.04.17

12

Nie mogę dokonać porównania, ponieważ Vim-LaTeX jest jedyną wtyczką LaTeX, z której korzystałem. Używam Vim-LaTeX od prawie roku. Opowiem więc o samym Vim-LaTeX.

W Vim-LaTeX jest wiele funkcji. Nie pamiętam ich wszystkich. Opowiem tylko o funkcjach, które znam i których używam stale.

Uwaga: są to moje ograniczone doświadczenia użytkownika , które mogą być bardzo mylące . Nie jestem wytrawnym użytkownikiem Vima. I nic nie wiem o vimscript.

IMAP () i <C-j>Jumpping

IMAP()funkcje i funkcje <C-j>skokowe są dostarczane osobno jako wtyczka imaps.vimw pakiecie Vim-LaTeX. Są to zaawansowane funkcje i mogą być bardzo przydatne, nawet jeśli nie piszesz LaTeX.

  • IMAP()funkcja zapewnia bardziej naturalny sposób wykonywania mapowań w trybie wstawiania i szablonów w ogóle niż wbudowane imapi iabbrevIMO.

  • <C-j>przeskakiwanie jest wykorzystywane przez wiele funkcji uzupełniających Vim-LaTeX. Punkt przeskoku jest oznaczony symbolem <++>.

  • Wbudowane odwzorowania klawiszy w trybie wstawiania są implementowane jako IMAP()wywołania. Na przykład możesz znaleźć długą listę przydatnych IMAP()połączeń w main.vimpliku:

    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")
    ...
    

Następnie, gdy wpiszesz say (), kursor będzie automatycznie znajdować się między nawiasami, zastępując pierwszy <++>. Po zakończeniu pisania w środku, kopniesz <C-j>i uderzysz, kursor wyjdzie z nawiasu i po prostu będziesz pisać dalej. Kiedy już się do tego przyzwyczaisz, zaczyna tworzyć ciąg pisania, który jest trochę uzależniający ...

Widzisz z góry \left \rightparę można łatwo wpisać za pomocą podwójnego pociągnięcia uchwytu otwierającego. A <C-j>skakanie sprawia, że ​​pisanie jest płynne.

Jednym z głównych usterki od IMAP()i <C-j>rzeczą jest to, że oni bałagan ostatnią historię zmian . (Jeden błąd, który chcę naprawić przez długi czas.) Dlatego możesz napotkać nieoczekiwane zachowanie podczas próby powtórzenia ostatniej zmiany, .jeśli „domniemana ostatnia zmiana” zawiera te wywołania funkcji.

  • Możesz wykonywać wszelkiego rodzaju mapowania IMAP(), od prostych mapowań kluczowych do bardziej złożonych szablonów. Oto kilka przykładów moich mapowań ( 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')
    
  • Ciekawym faktem na temat imaps.vimwtyczki jest to, że jest to wtyczka globalna, co sugeruje jej potencjalne wykorzystanie poza LaTeX. Rzeczywiście, używam <++>i <C-j>przeskakuję (łącząc się z innymi wtyczkami) do tworzenia szablonów fragmentów kodu w C.

<F5> <F7> Wstawianie poleceń i środowisk

Jedną wadą IMAP()jest to, że kombinacji klawiszy nie można już używać w normalnym tekście (chyba że cofniesz mapowanie przez u). W przypadkach, w których chcesz uruchomić mapowanie według własnego uznania, <F5>i <F7>przydadzą się. Te dwa klucze są używane odpowiednio do uruchamiania środowisk i wstawiania poleceń wbudowanych. I zachowują się inaczej w zależności od trybu i ustawień użytkownika.

  • W trybie wstawiania / normalnym, gdy kursor dołącza słowo lub znajduje się w nim, naciśnięcie <F5>domyślnie wstawia podstawowe środowisko formularza

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

    na podstawie słowa; naciśnięcie <F7>domyślnie wstawi podstawowe polecenie wstawiane w formularzu \word{}<++>na podstawie słowa.

  • „Domyślnie” mam na myśli to, że możesz dostosować zachowanie określonego słowa, gdy zostanie wywołane przez <F5>/ <F7>. Oto niektóre z moich ustawień ( .vimrc):

    let g:Tex_Com_newcommand = "\\newcommand{<++>}[<++>]{<++>}<++>"
    let g:Tex_Com_latex = "{\\LaTeX}<++>"
    let g:Tex_Com_D = "\\D{<++>}{<++>}<++>"
    
  • W trybie wstawiania / normalnym, gdy kursor nie jest podłączony do niczego (aka sam ), naciśnięcie przycisku <F5>/ <F7>spowoduje wyświetlenie menu do wyboru środowiska / polecenia do wstawienia. Lub możesz wpisać nazwę żądanego środowiska / polecenia na dole. Osobiście rzadko używam <F5>/ w <F7>ten sposób.

  • Naciśnij <F5>/ <F7>po wizualnym wybraniu fragmentu tekstu spowoduje wyświetlenie menu do zawijania tekstu . Następnie zaznaczony tekst zostanie zawinięty w wybranym środowisku lub poleceniu.

  • W trybie wstawiania / normalnym, gdy kursor znajduje się w zakresie środowiska / polecenia, naciśnięcie <Shift>+<F5>/<F7>powoduje wyświetlenie menu zmiany środowiska / polecenia .

Różne kluczowe mapowania

  • Litery greckie. `ado `zi odpowiednich stolic.
  • Symbole jak `8na \infty, `<na \le, `Ina \int_{<++>}^{<++>}<++>, itd.
  • "Dwukrotne naciśnięcie daje parę podwójnych cudzysłowów TeX-a. Aby wpisać dosłowny "znak, musisz użyć.
  • Naciśnięcie w kilku środowiskach wyliczania spowoduje wstawienie odpowiedniego \itemznacznika.
  • Możesz owinąć wizualnie wybraną część matematyki \left \rightparami przez `(, `[i `{.
  • Składanie można dostosować. Trzy zmienna globalna kontrola co można złożyć: Tex_FoldedSections, Tex_FoldedMisc, i Tex_FoldedEnvironments.

Czasami wbudowane mapowania po prostu zaszły za daleko lub nie wychodzą z tego, co chcesz. Możesz zastąpić wbudowane odwzorowania, zmieniając je w 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')

Ustaw silnik wielokrotnej kompilacji

Zawsze muszę przełączać się między silnikiem pdflatexa xelatexsilnikiem. Tak więc mam następujące wiersze .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>

Przeglądaj PDF, wyszukiwanie do przodu i do tyłu między Vimem a przeglądarką PDF

To jest bałaganiarski i skomplikowany temat. Dzięki pewnej przeglądarce plików PDF i pewnej odrobinie szczęścia może to być bardzo łatwe. Ale to głównie kwestia wyszukiwania w Google.

Propozycje

  • Powinieneś znaleźć równowagę między sposobem LaTeX a sposobem Vim-LaTeX.
  • Vim-LaTeX nie jest wcale lekki. Istnieją pewne funkcje i / lub kluczowe odwzorowania, których prawdopodobnie nigdy nie użyjesz i musisz je ręcznie zastąpić.
  • Używasz Vima. Wiesz, co oznacza cierpliwość . :-)

Ogólnie rzecz biorąc, myślę, że będzie działać dobrze, jeśli będziesz chciał zainwestować trochę czasu, aby oswoić bestię. Biorąc to pod uwagę, gdybym miał czas i odpowiednią wiedzę, z pewnością przerzedzę ogólne funkcje i zbadam potencjał integracji z innymi wtyczkami.

Bibliografia

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.