Найти в Дзене
Блокнот математика

Рубрика "Секреты Вим". Вим и TeX

Всем привет, на этой неделе я расскажу о возможностях Вим для редактирования работ в системе TeX (или LaTeX, или других надстроек). Речь пойдет о специальных средствах, предусмотренных для теха.

Оглавление рубрики

Фолдинг включается через переменную

let g:tex_fold_enabled=1

в .vimrc наряду с

set foldingmethod=syntax

Сворачиваются части, главы, параграфы и подпараграфы и т.д. Можно вставить в конец документа спецкомментарий для Вима:

%vim: ftm=syntax

и Вим включит фолдинг, если выставлена переменная tex_fold_enabled.

Проверка орфографии

Можно отключить проверку орфографии (зачем?) в тех-документах:

let g:tex_nospell=1

А можно отключить только для комментариев, что уже полезно:

let g:tex_comment_nospell=1

Напротив, можно включить ее в зонах verbatim:

let g:tex_verbspell=1

Подсветка синтаксиса

Обычно режимы теха распознаются правильно, но порой бывают сбои (для нестандартных ограничителей). Предусмотрен спецкомментарий %stopzone, насильно прерывающий раскраску математического режима.

Для слабых компьютеров стоит уменьшить числа в

:syn sync maxlines=200
:syn sync minlines=50

Для мощных можно увеличить. Эти переменные ограничивают число строк, которые проверяются при раскраске синтаксиса. Бывает, что в большом файле прыгаешь в середину, а раскраски и нет.

Раскраску можно настраивать с точки зрения затрат мощности на парсинг через переменную g:tex_fast

Это строка содержит нуль и более символов:

  • пустая означает минимум раскраски.
  • b : жирный и курсив
  • c : комментарии
  • m : скобки, фигурные и квадратные.
  • M : математический режим.
  • p : части документа
  • r : (nocite, bibliography, label, pageref, eqref)
  • s : верхние и нижние индексы
  • S : texStyle
  • v : verbatim
  • V : texNewEnv и texNewCmd

Подсветка синтаксиса распознает ошибки и помечает их красным. Иногда это мешает: например, закрывающий знак доллара мы хотим поставить позже, а все выделено красным. Подавить подсветку синтаксических ошибок позволяет

:let g:tex_no_error=1

Еще об ошибках. Символы @ и _ подсвечиваются как ошибка в .tex-файлах, но это можно отключить:

:let b:tex_stylish = 1

И вообще можно указать, какие символы считать символами ключевых слов, перекрыв представления самого теха на этот предмет: задайте переменную tex_isk. Действует только на .tex-файлы и касается только раскраски.

Если вы ввели новое окружение (а это бывает при использовании стилевых файлов), оно может не распознаться. Тогда его надо добавить:

call TexNewMathZone(sfx,mathzone,starform)

Суффикс sfx надо придумать, это одна буква, A-L и V-Z заняты, так что-то между ними. Второй аргумент - собственно имя окружения, например, gather или как оно называется. Последний аргумент, если истина (единичка), разрешает форму со звездочкой. Пример:

:call TexNewMathZone(M, gather, 1)

Визуальная замена

Довольно удобная побочная возможность раскраски синтаксиса — замена распознанного текста одним символом. Это называется conceal.

Например, если вы работаете в utf8, Вим может заменить команду верхнего индекса с числовым аргументом (^2, скажем) на ². Или \lambda на λ. См. на скриншоте. Причем когда мы встаем курсором на строку, эти подстановки раскрываются, текст-то неизменен, это просто вариант раскраски.

Ну вот как-то так: верхни и нижние индексы, включая степени n и i, греческие буквы, плюс-минус...
Ну вот как-то так: верхни и нижние индексы, включая степени n и i, греческие буквы, плюс-минус...

Выставьте

:set concealmode=2

и g:tex_conceal, которая по умолчанию содержит admgs. Варианты:

a — акценты и диакритика, например, Crème Brûlée
b — жирный и курсивный начертания
d — разделители
m — математические значки, например, ∫
g — греческие символы
s — верхние и нижние индексы

Куда-то сюда входит и буква алеф (א), не знаю уж, к греческим ее отнесли или к математическим))

Как видите, все продумано. Привязки, сокращения и меню позволяют настроить под себя всё очень комфортно. Для сборки используйте make, вызов команд прямо из Вим через восклицательный знак:

:!pdflatex dissert.tex

или выход в bash.

И удачи, коллеги!

Путеводитель по каналу