Мне нужно выделить исходный код в LaTeX. Пакет, listings
кажется, лучший выбор для большинства вариантов использования, и для меня это было до сих пор.
Однако сейчас мне нужно больше гибкости. Вообще то, что я ищу, это настоящий лексер. В частности, мне нужно (для определения собственного языка) определить (и выделить!) Собственные стили чисел. listings
не позволяет выделять цифры в коде. Тем не менее, мне нужно произвести что-то вроде этого:
listings
также не может справиться с произвольными разделителями для строк. Рассмотрим следующий допустимый код Ruby:
s = %q!this is a string.!
Здесь !
можно заменить практически любой разделитель.
(Это listings
не может справиться с Unicode, также довольно неприятно, но это другая проблема.)
В идеале я ищу расширение, listings
которое позволит мне предоставить более сложные правила лексизма. Но, кроме этого, я также ищу жизнеспособные альтернативы.
Другие потоки предложили использовать Pygments, которые могут генерировать вывод LaTeX. Там даже пакет - texments
- чтобы облегчить переход.
Тем не менее, это очень не хватает функций. В частности, меня интересует listings
нумерация строк в стиле, ссылки на строки исходного кода и возможность встраивания LaTeX в исходный код (опции texcl
и mathescape
in listings
).
В качестве примера, вот набор listings
типов исходного кода, который показывает некоторые вещи, которые замена должна также обеспечить:
[«Боковое дополнение» модифицировано из «Битовых хедчей»]
источник
Ответы:
Принимая совет Нормана близко к сердцу, я собрал воедино решение, в котором использовались ( исправленные ) фрагменты для выделения и добавления как можно большего числа функций без разрывов ;-)
Я также создал пакет LateX, как только мой патч Pygments был выпущен в версии 1.2 ...
Представление чеканился
чеканились представляет собой пакеткоторый использует Pygments обеспечить первоклассную подсветку синтаксиса в LaTeX. Например, он позволяет следующий вывод.
Вот минимальный файл для воспроизведения вышеуказанного кода (обратите внимание, что для включения символов Unicode может потребоваться XeTeX)!
Это может быть набрано с помощью следующей команды:
(Но чеканка также работает с
latex
иpdflatex
...)minted.sty
работает аналогично,texments.sty
но позволяет дополнительные функции.Как его получить
отчеканенных в списке на CTAN ( пакет информация )
документация, конечно, включена.
отчеканенный теперь поддерживается Джеффри Пур. Версия для разработки, включая последний
.sty
файл , доступна по адресу github.com/gpoore/minted и может быть клонирована оттуда.Еще раз спасибо Норману за то, что он мотивировал меня на создание этого пакета.
источник
easy_install
), процесс никогда не будет очень гладким.TeX (классно) завершен по Тьюрингу, но я уверен, что вам придется написать это расширение самостоятельно. Документация поясняет, что первоначальный автор
listings
осиротел в 2004 году и не обновлялся с 2006 года. Пакет не предназначен для переопределения форматирования числовых литералов, но вы можете изменить его, изменив определение\lst@ProcessDigit
. Если это не сработает, вам нужно будет подробно понять, как работают параметры «стиля идентификатора», и вам придется продублировать этот механизм для ваших числовых литералов.Я не совсем понимаю, почему вы так неохотно вводите внешний инструмент в свою цепочку инструментов, но из-за этого вам придется выполнять дополнительную работу. После просмотра исходного кода я ожидаю, что модификация
listings
должна быть возможной, но я лично предпочел бы вместо этого предварительно обработать мой LaTeX.источник
\label
внутри кода.listings
, я уже взглянул на их источник - и, к сожалению, я его вообще не понимаю. Мои навыки TeX не достигли этого уровня. До сих пор я когда-либо использовал только подмножество TeX LaTeX.minted
процесс публикации LNCS в Springer.Это пакет, который преобразует исходный код в TeX и LaTeX с подсветкой синтаксиса. Можно легко добавить пользовательские определения языка программирования.
Highlight поддерживает 100 языков программирования и включает 50 цветовых тем. Он имеет переформатирование кода и отступ.
Я не использовал это, чтобы знать, как ХОРОШО это работает, но кто-то еще, которого я знаю, сказал, что это работало довольно хорошо. Если у меня будет шанс, я сам попробую и посмотрю.
источник
highlight
разделяет все проблемы Pygments, хотя. В частности, это не пакет LaTeX , несмотря на то, что говорится в его описании. Это просто отдельная программа. Проблема, как и в случае с Pygments, заключается в том, как осмысленно использовать его в LaTeX и предоставлять все, что в немlistings
есть.