Выделение исходного кода в LaTeX
мне нужно выделить исходный код в LaTeX. Пакет listings Кажется, это лучший выбор для большинства случаев использования, и для меня это было до сих пор.
однако, теперь мне нужно больше гибкости. Как правило, то, что я ищу-это реальные лексер. В частности, мне нужно (для определения собственного языка) определить (и выделить!) собственные числовые стили. listings не позволяет выделять числа в коде. Однако, мне нужно произвести что-то вроде это:

listings также не может справиться с произвольными разделителями для строк. Рассмотрим следующий допустимый код Ruby:
s = %q!this is a string.!
здесь ! можно заменить практически любой разделитель.
(том listings не может обрабатывать Unicode также довольно неприятно, но это еще одна проблема.)
в идеале, я ищу продолжение listings это позволяет мне предоставить более сложные правила лексики. Но за исключением этого, я также ищу жизнеспособные альтернативы.
другие темы предложили использовать одном что может произвести выход латекса. Там даже пакет -texments – чтобы облегчить переход.
однако, это очень не хватает функций. В частности, меня интересует listings - стиль нумерации строк, ссылки на строки исходного кода и возможность встраивания LaTeX в исходный код (options texcl и mathescape в listings).
в качестве примера, вот набор исходного кода с listings который показывает некоторые из вещей, которые замена также должна обеспечить:
["боковое дополнение" модифицировано из битных скручивающих хаков]
3 ответов:
принимая Совет Нормана близко к сердцу, я взломал решение, которое использовало (a пропатчил) пигменты для выделения и толкнул в как можно больше функций, как это возможно без разрыва ; -)
Я также создал пакет LateX, как только мой патч Pygments был выпущен в версия 1.2...
представления чеканились
чеканились это пакет, который использует пигменты для обеспечьте первоклассную подсветку синтаксиса в LaTeX. Например, он позволяет следующий вывод.
вот минимальный файл для воспроизведения вышеуказанного кода (обратите внимание, что в том числе символы Юникода могут потребовать XeTeX)!
\documentclass[a4paper]{article} \usepackage{fontspec} \usepackage{minted} \setsansfont{Calibri} \setmonofont{Consolas} \begin{document} \renewcommand{\theFancyVerbLine}{ \sffamily\textcolor[rgb]{0.5,0.5,0.5}{\scriptsize\arabic{FancyVerbLine}}} \begin{minted}[mathescape, linenos, numbersep=5pt, gobble=2, frame=lines, framesep=2mm]{csharp} string title = "This is a Unicode π in the sky" /* Defined as $\pi=\lim_{n\to\infty}\frac{P_n}{d}$ where $P$ is the perimeter of an $n$-sided regular polygon circumscribing a circle of diameter $d$. */ const double pi = 3.1415926535 \end{minted} \end{document}это может быть набрано с помощью следующей команды:
xelatex -shell-escape test.tex(а чеканились работает с
latexиpdflatex...)
minted.styработает аналогичноtexments.styно позволяет дополнительные элементы.как его получить
чеканились и перечислены на CTAN (пакета)
документация, конечно, включены.
чеканились теперь поддерживается Джеффри Пур. Версия разработки, включая последнюю
.styfile доступен по адресу: github.com/gpoore/minted, и может быть клонирован оттуда.еще раз спасибо Норману за то, что он побудил меня выпустить этот пакет.
TeX (отлично) Turing-complete, но я уверен, что вам придется написать это расширение самостоятельно. В документации четко указано, что автор оригинала
listingsосиротел он в 2004 году, и что он не был обновлен с 2006 года. Пакет не был разработан для переопределения форматирования числовых литералов, но вы можете изменить его, изменив определение\lst@ProcessDigit. Если это не сработает, вам придется подробно понять, как " стиль идентификатора" параметры работают, и вам придется дублировать этот механизм для ваших числовых литералов.Я не совсем понимаю, почему вы так неохотно вводите внешний инструмент в свою цепочку инструментов, но поскольку вы это делаете, вам придется делать дополнительную работу. После просмотра исходного кода, я ожидаю, что изменение
listingsдолжно быть возможно, но я лично предпочел бы предварительно обработать мой латекс.
этой - это пакет, который преобразует исходный код в TeX и LaTeX с подсветкой синтаксиса. Можно добавить пользовательские определения языка программирования.
подсветка поддерживает 100 языков программирования и включает в себя 50 цветовых тем. Он имеет код переформатирования и отступов.
Я не использовал его, чтобы знать, насколько хорошо он работает, но кто-то еще, кого я знаю, сказал, что он работает довольно хорошо. Если у меня будет шанс, я попробую сам и ... видеть.

Comments