Раскраска синтаксиса в latex с использованием Minted

#latex #syntax-highlighting #tex

#Латекс #подсветка синтаксиса #текс

Вопрос:

У меня возник вопрос о том, возможно ли придать либо отчеканенному пакету, либо пакету texments цвет синтаксиса, подобный тому, который вы видите в xcode. Не обязательно одинаковые цвета, это не имеет значения, но для выделения всех типов переменных и тому подобных вещей.

Примером этого может быть то, что когда я использовал minted, такие вещи, как @synthesize, float, int, все выделяются, но NSArray или NSMutableDictionary этого не делают.

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

Заранее спасибо за любую помощь!

Ответ №1:

К сожалению, это не (легко) возможно.

minted и texments полагаться на лексический анализ кода. Лексический анализ сравнительно прост и эффективен, но это только первый этап разбора исходного кода.

В результате лексический анализ может распознавать ключевые слова, строки, комментарии и идентификаторы, но он не может отличить идентификаторы друг от друга. Для этого анализатору потребуется проанализировать весь базовый код (включающий несколько файлов) и построить абстрактное синтаксическое дерево.

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

Xcode в любом случае должен полностью анализировать код (для сообщений об ошибках, отладки и прочего) и поддерживает базу данных с информацией о разборе для каждого проекта. Это позволяет ему обеспечивать более сложную подсветку кода и при этом хорошо работать. Вы можете заметить, что при загрузке одного файла кода (не являющегося частью проекта) в Xcode, полная раскраска синтаксиса имен переменных также выполняться не будет.

Комментарии:

1. Извините за задержку с ответом. Я полагал, что это будет проблемой, подобной этой, но не знал, есть ли простой способ обойти это. Впрочем, ничего страшного, сейчас это работает достаточно хорошо. Может быть, если у меня будет немного свободного времени, я попытаюсь создать лучшую схему раскраски (хотя, вероятно, нет :])