Я использую Pygments как часть MarkDown, Python и LaTeX (до minted
).По этим причинам я не могу легко перейти на другой инструмент и хотел бы найти решение в Pygments.
Чего я хочу добиться, так это иметь «специальную подсветку» помимо простой подсветки синтаксиса.Это включает, например, сохранение определенного вывода терминала в его исходном цвете.Или добавление дополнительных стилей для облегчения выделения аргументов для заполнения пользователем. Пример, безусловно, облегчит это понимание.
В руководстве Swift, написанном Apple, аргументы, которые вы можете использоватьзаполнить выделены воздушными шарами.Это значительно облегчает их идентификацию, и воздушный шар может охватывать диапазон токенов:
![enter image description here](https://i.stack.imgur.com/faanc.jpg)
Я хочу добиться чего-то подобного с помощью Pygments.Простое изменение стиля не работает.Вы хотите, чтобы эти вещи обычно стилизовались для их типа токена, когда они не находятся внутри шарика, и вы не хотите какой-либо особой подсветки типа, когда он находится внутри шарика.Я не думаю эти типы воздушных шаров возможны в текущих ванильных Пегментах.Я думаю Мне нужен токен нового типа, чтобы достичь того, чего я хочу.Я хотел бы использовать это для различных языков, поэтому в идеале я хочу найти способ сделать это с наименьшим количеством модификаций.К сожалению, я не думаю Я могу добиться того, чего хочу, с помощью фильтров Pygments.Мне кажется, что мне нужно переписать лексеры для всех языков, которые я хочу использовать, но я думаю Я могу сделать это, разбив их на подклассы.
Подводя итог, что я хочузаключается в том, что я передаю код, такой как
§label name§: while §condition§ {
, и что, например, при выводе HTML получается что-то вроде
<code><pre><span class="balloon">label name</span>: <span class="k">while</span><span class="balloon">condition</span> {
.Я не привязываю себя к использованию символа §
для этого нового окружения или чего-то подобного, это всего лишь пример предполагаемого поведения.
После изменения лексера для каждого языка, который я используюэто довольно сложная задача, и, поскольку документация Pygments весьма спартанская, я хотел бы спросить, как это можно решить и не замечаю ли я что-то.Правильно ли я считаю, что мне нужен новый токен и нужно переписывать каждый лексер?Или есть более разумный способ?