So konfigurieren Sie den Zauber, um einige Umgebungen in LaTeX zu ignorieren

10

Gibt es eine Möglichkeit, vim anzuweisen, einen Teil eines Latexdokuments nicht auf Rechtschreibprüfung zu überprüfen? Zum Beispiel Codeblock mit der mintedUmgebung oder URLs in \url{}?

(Ich bin nicht sicher, ob es für die Rechtschreibprüfung relevant ist, aber ich verwende das vimtex- Plugin, um Latexdateien zu bearbeiten.)

Grégoire
quelle
1
Siehe (auch) dies: vi.stackexchange.com/a/4003/1800
VanLaser
@ Gregoire erwähnte diese Frage auch in vimtex / issue / # 219 .
Karl Yngve Lervåg

Antworten:

10

Sie können die Rechtschreibprüfung für Syntaxelemente deaktivieren, indem Sie sie zusammen mit einem Cluster hinzufügen @NoSpell. Sie können :help spell-syntaxeinige Informationen lesen und sich Ihre Tex-Syntaxdatei ansehen, die höchstwahrscheinlich bereits mehrere Beispiele enthält. Wenn Sie eingeben :tabe $VIMRUNTIME/syntax/tex.vim, sollten Sie die Tex-Syntaxdatei in einer neuen Registerkarte erhalten. Wenn Sie dann suchen, sehen /\c@NoSpellSie möglicherweise eine Zeile wie

 syn cluster texMathZoneGroup add=@NoSpell

Der texMathZoneGroupCluster wurde zuvor im Skript so definiert, dass er eine Reihe von Syntaxelementen enthält. Hier @NoSpellwird er dem Cluster hinzugefügt, um die Rechtschreibprüfung für diese Elemente zu deaktivieren. Ich kann leider nicht genau sagen, wo die Änderung für Ihre speziellen Syntaxelemente am besten vorgenommen werden soll, da ich diese Syntaxdatei nicht sehr gut kenne. Möglicherweise gibt es bereits einen offensichtlichen Cluster, in dem Sie einfach hinzufügen können @NoSpell, oder Sie müssen möglicherweise einen Cluster erstellen, der contains=die betreffenden Elemente enthält. Es ist auch eine gute Idee, eine Kopie der Syntaxdatei in Ihrem Benutzer-Laufzeitverzeichnis zu erstellen und Ihre Änderungen dort anzuwenden, anstatt die verteilte Syntaxdatei zu ändern, oder Ihre Änderungen in einem after/syntax/tex.vimoder einem anderen Skript anzuwenden , das nach dem Laden der Syntaxdatei ausgeführt wird .

Da Sie ein Plugin verwenden, enthält es möglicherweise Optionen für die Rechtschreibprüfung von Elementen. Ich benutze nicht, vimtexaber Karl Lervåg ist hier ziemlich aktiv und wenn Sie seine Aufmerksamkeit bekommen, könnte das für Sie antworten.

jjaderberg
quelle
Es gibt heute keine solchen Optionen vimtex, nein. Es scheint jedoch sinnvoll zu sein, die Rechtschreibung in geprägten Umgebungen zu ignorieren, sodass ich das Plugin möglicherweise entsprechend aktualisieren kann. Danke für die nette Erklärung!
Karl Yngve Lervåg
Ich habe mich im Code umgesehen und keine vorhandene Region für die geprägte Umgebung gefunden, also habe ich versucht, eine eigene wie diese zu erstellen: syn region mintedZone start="\\begin{minted}" end="\\end{minted}" contains=@NoSpellaber es scheint nicht zu helfen. Irgendein Vorschlag?
Grégoire
@ Grégoire Bitte lassen Sie uns diese Diskussion in der Vimtex-Ausgabe fortsetzen .
Karl Yngve Lervåg
5

Sie können z ~/.vim/after/syntax/tex.vim. B. Ihre eigenen Syntaxregeln hinzufügen . Um die Rechtschreibprüfung in einem Befehl wie zu verhindern \url, können Sie den folgenden Code verwenden:

syntax match texStatement '\\command' nextgroup=texMyCommand
syntax region texMyCommand matchgroup=Delimiter start='{' end='}' contained contains=@NoSpell

Hier texStatementund Delimitersind Gruppen, die vom internen Syntax-Plugin definiert werden, siehe :e $VIMRUNTIME/syntax/tex.vim.

Wenn Sie die obigen Befehle verstehen möchten, kann ich die folgenden Hilfeabschnitte empfehlen:

Karl Yngve Lervåg
quelle