Was sind die Unterschiede zwischen LaTeX-Plugins?


Antworten:


28

Ich werde keinen detaillierten Vergleich anstellen, da ich nur begrenzte Erfahrung mit den verschiedenen Plugins habe. Ich kenne einige Plugins gut ( LaTeX-Box und LaTeX-Suite ) und kenne ein Plugin sehr gut, da ich es selbst entwickle : vimtex . Daher werde ich hauptsächlich über vimtex schreiben. Ich werde jedoch zunächst auf einige Verweise hinweisen, die für andere von Interesse sein könnten.

Einige Überblicke und Referenzen

Es gibt eine Menge Plugins für Vim. Dies sind die, die ich als mindestens halb beliebt erkannt habe:

Auf tex.stackexchange.com gibt es eine riesige Liste von LaTeX-Editoren und -IDEs. Es gibt einen schönen Überblick im Allgemeinen, aber es gibt auch einen Überblick über Plugins für Vim:

vimtex

vimtex basiert auf LaTeX-Box. Es fing an, nachdem ich einige Zeit Fehlerbehebungen und Updates für LaTeX-Box beigesteuert hatte. Ich erkannte, dass das Plugin viel moderner geschrieben werden könnte, wenn ich es von Grund auf neu geschrieben hätte. Ich habe zuerst die meisten Funktionen entfernt und einen robusteren und modularen "Motor" gebaut. Ich habe dann Funktionen hinzugefügt und ich denke, dass es heute die meisten Funktionen von LaTeX-Box und noch einige mehr gibt.

Anstatt eine vollständige Liste der Funktionen zu geben (siehe stattdessen hier ), werde ich lieber versuchen, einige der Unterschiede zwischen vimtex und anderen Plugins herauszustellen. Ich möchte jedoch einige kühne Behauptungen aufstellen:

  • vimtex ist das derzeit modernste Vim-Plugin für LaTeX
  • Der Code ist von hoher Qualität und wird derzeit von mir selbst aktiv gepflegt
  • Das Plugin ist größtenteils stabil, obwohl einige Funktionen noch in der Entwicklung sind (und daher Änderungen und Aktualisierungen unterliegen können).

vimtex gegen LaTeX-Box

Da vimtex auf LaTeX-Box basiert, hat es offensichtlich ähnliche Prinzipien. Die Idee ist, die Dinge einfach zu halten und Probleme zu lösen, die noch nicht von anderen, besseren Plugins gelöst wurden. Es verwendet latexmk zum Kompilieren der LaTeX-Dokumente und baut auf dem internen Vim-Plugin zur Hervorhebung der Syntax auf.

Momentan gibt es in LaTeX-Box eine wichtige Funktion, die in vimtex fehlt: Single-Shot-Compilation mit Callback . Der Grund dafür, dass diese Funktion nicht in vimtex enthalten ist, liegt einfach daran, dass sie kompliziert ist und dass ich nie einen für meine Vorlieben einfachen Weg gefunden habe, sie zu implementieren (Vorschläge sind willkommen, bitte zögern Sie nicht, Probleme zu eröffnen oder Anfragen zu stellen ).

vimtex vs LaTeX-Suite

Der Hauptunterschied zwischen vimtex und LaTeX-Suite besteht wahrscheinlich darin, dass vimtex nicht versucht, eine vollwertige IDE für LaTeX in Vim zu implementieren. Z.B:

  • Vimtex bietet keine vollständige Snippet-Funktion, da dies besser von UltiSnips oder Neosnippet oder ähnlichen Snippet-Engines gehandhabt wird .
  • vimtex baut auf Vim-Prinzipien auf: Es stellt Textobjekte für Umgebungen, Inline-Mathematik und Bewegungen für Abschnitte und Absätze bereit
  • vimtex verwendet latexmkfür die Kompilierung eine Rückruffunktion, um sofortiges Feedback zu Kompilierungsfehlern zu erhalten
  • vimtex ist sehr modular aufgebaut: Wenn Ihnen eine Funktion nicht gefällt, können Sie sie deaktivieren.

Ich möchte nur klarstellen: Ich vimtexkann Seite an Seite arbeiten Latex-Suite, was bedeutet, dass Sie gleichzeitig das Beste aus den beiden Plugins herausholen können . :)
Llinfeng

12

Ich kann keinen Vergleich anstellen, da Vim-LaTeX das einzige LaTeX-Plugin ist, das ich verwendet habe. Ich benutze Vim-LaTeX seit fast einem Jahr. Ich werde also nur über Vim-LaTeX sprechen.

Es gibt viele Funktionen , die in Vim-LaTeX. Ich kann mich nicht an alle erinnern. Ich werde nur über Funktionen sprechen, die ich kenne und ständig benutze.

Hinweis: Dies ist meine eingeschränkte Benutzererfahrung , die möglicherweise sehr irreführend ist . Ich bin kein erfahrener Vim-Benutzer. Und ich weiß nichts über Vimscript.

IMAP () und <C-j>Jumpping

IMAP()Die Funktionen function und <C-j>jumpping werden separat als Plugin imaps.vimim Vim-LaTeX-Bundle bereitgestellt . Sie sind leistungsstarke Funktionen und können sehr nützlich sein, auch wenn Sie nicht mit LaTeX arbeiten.

  • IMAP()Die Funktion bietet eine natürlichere Möglichkeit, Einfügemodus-Zuordnungen und Vorlagen im Allgemeinen zu erstellen als die integrierte imapund die iabbrevIMO-Funktion.

  • <C-j>Das Springen wird von vielen Vim-LaTeX-Vervollständigungsfunktionen verwendet. Ein Sprungpunkt ist durch gekennzeichnet <++>.

  • Eingebaute Tastenzuordnungen im Einfügemodus werden als IMAP()Anrufe implementiert . Beispielsweise finden Sie eine lange Liste nützlicher IMAP()Anrufe in der main.vimDatei:

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

Wenn Sie dann say ()eingeben, befindet sich der Cursor automatisch zwischen den Klammern und ersetzt die erste <++>. Nachdem Sie die Eingabe beendet haben, treten <C-j>und schlagen Sie, der Cursor bewegt sich aus der Klammer heraus und Sie tippen einfach weiter vorwärts. Sobald Sie sich daran gewöhnt haben, beginnt sich ein Schreibfluss zu bilden, der irgendwie süchtig macht ...

Sie sehen von oben, dass ein \left \rightPaar leicht mit einem Doppelhub der öffnenden Klammer eingegeben werden kann. Und das <C-j>Springen bringt das Tippen zum Fließen.

Ein großer Fehler von IMAP()und <C-j>ist, dass sie Ihre letzte Änderungshistorie durcheinander bringen . (Ein Fehler, den ich schon lange beheben möchte.) Daher kann es zu unerwartetem Verhalten kommen, wenn Sie versuchen, Ihre letzte Änderung zu wiederholen, indem .Sie diese Funktionsaufrufe in Ihrer "vermuteten letzten Änderung" speichern.

  • Sie können alle Arten von Zuordnungen verwenden IMAP(), von einfachen Tastenzuordnungen bis hin zu komplexeren Vorlagen. Hier sind einige Beispiele für meine Zuordnungen ( 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')
    
  • Eine interessante Tatsache über imaps.vimPlugin ist, dass es sich um ein globales Plugin handelt, das seine potenzielle Verwendung über LaTeX hinaus impliziert. In der Tat verwende ich <++>und <C-j>Jumppings (in Kombination mit anderen Plugins), um Code-Snippet-Vorlagen in C zu erstellen.

<F5> <F7> Einfügen von Befehlen und Umgebungen

Ein Nachteil IMAP()ist, dass die Tastenkombination nicht mehr im normalen Text verwendet werden kann (es sei denn, Sie machen die Zuordnung rückgängig u). In den Fällen, in denen Sie das Mapping nur wie gewünscht auslösen möchten, ist das <F5>und <F7>praktisch. Diese beiden Tasten dienen zum Auslösen von Umgebungen bzw. zum Einfügen von Inline-Befehlen. Und sie verhalten sich je nach Modus und Anpassungen des Benutzers unterschiedlich.

  • Wenn der Cursor im <F5>Einfüge- / Normalmodus ein Wort anfügt oder sich im Wort befindet, wird durch Drücken von standardmäßig eine Basisumgebung des Formulars eingefügt

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

    basierend auf dem Wort; Durch Drücken von <F7>wird standardmäßig ein grundlegender Inline-Befehl des Formulars \word{}<++>basierend auf dem Wort eingefügt.

  • "Standardmäßig" bedeutet, dass Sie das Verhalten eines bestimmten Wortes anpassen können, wenn es von <F5>/ ausgelöst wird <F7>. Hier sind einige meiner Einstellungen ( .vimrc):

    let g:Tex_Com_newcommand = "\\newcommand{<++>}[<++>]{<++>}<++>"
    let g:Tex_Com_latex = "{\\LaTeX}<++>"
    let g:Tex_Com_D = "\\D{<++>}{<++>}<++>"
    
  • In Insert / Normal - Modus, wenn die Cursor nicht an irgendetwas (aka angebracht allein ), Press- <F5>/ <F7>werden Sie aufgefordert , ein Menü zu Umwelt / Befehl zum Einsatz wählen. Oder Sie können den Namen der gewünschten Umgebung / des gewünschten Befehls unten eingeben. Persönlich benutze ich selten <F5>/ auf <F7>diese Weise.

  • Durch Drücken von <F5>/ <F7>nach dem visuellen Auswählen eines Textstücks wird ein Menü zum Umbrechen von Text angezeigt . Dann wird der ausgewählte Text in die von Ihnen ausgewählte oder eingegebene Umgebung / den Befehl eingeschlossen.

  • Wenn sich der Cursor im Einfüge- / Normalmodus im Bereich einer Umgebung / eines Befehls befindet, wird durch Drücken von <Shift>+<F5>/<F7>ein Menü zum Ändern der Umgebung / des Befehls aufgerufen .

Verschiedene Tastenzuordnungen

  • Griechische Buchstaben. `azu `zund entsprechende Hauptstädte.
  • Symbole wie `8für \infty, `<für \le, `Ifür \int_{<++>}^{<++>}<++>usw.
  • Durch "zweimaliges Drücken erhalten Sie zwei TeX-Anführungszeichen. Um also wörtliche "Zeichen einzugeben , müssen Sie verwenden.
  • Wenn Sie in mehreren Enumerationsumgebungen drücken, wird das entsprechende \itemTag eingefügt.
  • Sie können einen visuell ausgewählten Teil der Mathematik \left \rightpaarweise mit `(, `[und einschließen `{.
  • Falten ist anpassbar. Drei globale Variable steuern , welche gefaltet werden kann: Tex_FoldedSections, Tex_FoldedMisc, und Tex_FoldedEnvironments.

Manchmal sind die eingebauten Zuordnungen einfach zu weit gegangen oder es wird nicht beendet, was Sie wollen. Sie können die integrierten Zuordnungen überschreiben, indem Sie sie neu definieren in 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')

Stellen Sie die Multiple Compilation Engine ein

Ich muss immer zwischen pdflatexund xelatexMotor wechseln . Somit habe ich folgende Zeilen in meinem .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 anzeigen, Vorwärts- und Rückwärtssuche zwischen Vim und PDF-Viewer

Dies ist ein chaotisches und kompliziertes Thema. Mit einem bestimmten PDF-Viewer und einer gewissen Menge Glück kann es sehr einfach sein. Aber es geht hauptsächlich um die Google-Suche.

Vorschläge

  • Sie sollten Ihr Gleichgewicht zwischen LaTeX Way und Vim-LaTeX Way finden.
  • Vim-LaTeX ist überhaupt nicht leicht. Es gibt einige Funktionen und / oder Tastenzuordnungen, die Sie möglicherweise nie verwenden werden und die Sie manuell überschreiben müssen.
  • Sie verwenden Vim. Sie wissen, was Geduld bedeutet. :-)

Insgesamt denke ich, dass es gut funktionieren wird, wenn Sie bereit sind, etwas Zeit zu investieren, um das Biest zu zähmen. Vorausgesetzt, ich habe Zeit und ausreichende Kenntnisse, werde ich mit Sicherheit die Overhead-Funktionen abschwächen und die Integrationsmöglichkeiten mit anderen Plugins untersuchen.

Verweise

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.