Как настроить заклинание, чтобы игнорировать некоторые среды в LaTeX

10

Есть ли способ сказать vim не проверять орфографию части латексного документа? Например, блок кода с использованием mintedсреды или URL-адреса в \url{}?

(Я не уверен, что это актуально для проверки орфографии, но я использую плагин vimtex для редактирования латексных файлов.)

Грегуар
источник
1
Смотрите (также) это: vi.stackexchange.com/a/4003/1800
VanLaser
@Gregoire также упоминал этот вопрос в vimtex / tasks / # 219 .
Карл Ингве Лервог,

Ответы:

10

Вы можете отключить проверку орфографии для элементов синтаксиса, добавив их в кластер вместе с @NoSpell. Вы можете прочитать :help spell-syntaxнекоторую информацию и взглянуть на свой файл синтаксиса tex, который, скорее всего, уже содержит несколько примеров. При вводе :tabe $VIMRUNTIME/syntax/tex.vimвы должны получить синтаксический файл tex на новой вкладке. Если вы затем выполните поиск, /\c@NoSpellвы можете увидеть строку вроде

 syn cluster texMathZoneGroup add=@NoSpell

texMathZoneGroupКластер был определен ранее в сценарии содержит ряд элементов синтаксиса и здесь @NoSpellдобавляется в кластер , чтобы отключить проверку орфографии для этих элементов. Боюсь, я не могу точно сказать, где лучше всего внести изменения для ваших конкретных элементов синтаксиса, поскольку я не очень хорошо знаю этот файл синтаксиса. Возможно, уже существует очевидный кластер, куда вы можете просто добавить @NoSpell, или вам может потребоваться создать кластер, contains=в котором находятся рассматриваемые элементы. Также неплохо сделать копию файла синтаксиса в пользовательском каталоге времени выполнения и применить туда свои изменения, а не изменять распределенный файл синтаксиса, или применить изменения в каком- after/syntax/tex.vimлибо или другом сценарии, который запускается после загрузки файла синтаксиса. ,

Поскольку вы используете плагин, у него могут быть параметры, связанные с тем, какие элементы проверяются орфографией. Я не пользуюсь, vimtexно Карл Лервог здесь довольно активен, и если вы привлечете его внимание, вы можете ответить на этот вопрос.

jjaderberg
источник
Таких вариантов vimtexсегодня нет, нет. Но, кажется, имеет смысл игнорировать орфографию в чутких средах, поэтому я мог бы соответствующим образом обновить плагин. Спасибо за приятное объяснение!
Карл Ингве Лервог,
Я посмотрел в коде и не нашел существующего региона для чеканки окружения, поэтому попытался создать свой собственный, например, так: syn region mintedZone start="\\begin{minted}" end="\\end{minted}" contains=@NoSpellно, похоже, это не помогает. Любое предложение?
Грегуар
@ Grégoire Пожалуйста, давайте продолжим эту дискуссию в выпуске vimtex .
Карл Ингве Лервог,
5

Вы можете добавить свои собственные правила синтаксиса, например ~/.vim/after/syntax/tex.vim. Чтобы предотвратить проверку орфографии внутри такой команды, как \url, вы можете использовать следующий код:

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

Здесь texStatementи Delimiterнаходятся группы, которые определены внутренним синтаксическим плагином, см :e $VIMRUNTIME/syntax/tex.vim.

Если вы хотите понять приведенные выше команды, я могу порекомендовать следующие разделы справки:

Карл Ингве Лерваг
источник