#latex #syntax-highlighting #tex
#Латекс #подсветка синтаксиса #текс
Вопрос:
У меня возник вопрос о том, возможно ли придать либо отчеканенному пакету, либо пакету texments цвет синтаксиса, подобный тому, который вы видите в xcode. Не обязательно одинаковые цвета, это не имеет значения, но для выделения всех типов переменных и тому подобных вещей.
Примером этого может быть то, что когда я использовал minted, такие вещи, как @synthesize, float, int, все выделяются, но NSArray или NSMutableDictionary этого не делают.
Кто-нибудь знает, как это изменить или, возможно, добавить больше форматирования в пакет. Я искал, но ничего не было слишком полезным.
Заранее спасибо за любую помощь!
Ответ №1:
К сожалению, это не (легко) возможно.
minted
и texments
полагаться на лексический анализ кода. Лексический анализ сравнительно прост и эффективен, но это только первый этап разбора исходного кода.
В результате лексический анализ может распознавать ключевые слова, строки, комментарии и идентификаторы, но он не может отличить идентификаторы друг от друга. Для этого анализатору потребуется проанализировать весь базовый код (включающий несколько файлов) и построить абстрактное синтаксическое дерево.
Это намного сложнее и отнимает много времени и, как правило, слишком неэффективно для раскраски синтаксиса. По этой причине большинство инструментов выделения кода не выполняют такого глубокого анализа.
Xcode в любом случае должен полностью анализировать код (для сообщений об ошибках, отладки и прочего) и поддерживает базу данных с информацией о разборе для каждого проекта. Это позволяет ему обеспечивать более сложную подсветку кода и при этом хорошо работать. Вы можете заметить, что при загрузке одного файла кода (не являющегося частью проекта) в Xcode, полная раскраска синтаксиса имен переменных также выполняться не будет.
Комментарии:
1. Извините за задержку с ответом. Я полагал, что это будет проблемой, подобной этой, но не знал, есть ли простой способ обойти это. Впрочем, ничего страшного, сейчас это работает достаточно хорошо. Может быть, если у меня будет немного свободного времени, я попытаюсь создать лучшую схему раскраски (хотя, вероятно, нет :])