Выделение исходного кода в LaTeX



мне нужно выделить исходный код в LaTeX. Пакет listings Кажется, это лучший выбор для большинства случаев использования, и для меня это было до сих пор.



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



Required result



listings также не может справиться с произвольными разделителями для строк. Рассмотрим следующий допустимый код Ruby:



s = %q!this is a string.!


здесь ! можно заменить практически любой разделитель.



(том listings не может обрабатывать Unicode также довольно неприятно, но это еще одна проблема.)



в идеале, я ищу продолжение listings это позволяет мне предоставить более сложные правила лексики. Но за исключением этого, я также ищу жизнеспособные альтернативы.



другие темы предложили использовать одном что может произвести выход латекса. Там даже пакет -texments – чтобы облегчить переход.



однако, это очень не хватает функций. В частности, меня интересует listings - стиль нумерации строк, ссылки на строки исходного кода и возможность встраивания LaTeX в исходный код (options texcl и mathescape в listings).



в качестве примера, вот набор исходного кода с listings который показывает некоторые из вещей, которые замена также должна обеспечить:



LaTeX listings example: Sideways addition["боковое дополнение" модифицировано из битных скручивающих хаков]

594   3  

3 ответов:

принимая Совет Нормана близко к сердцу, я взломал решение, которое использовало (a пропатчил) пигменты для выделения и толкнул в как можно больше функций, как это возможно без разрыва ; -)

Я также создал пакет LateX, как только мой патч Pygments был выпущен в версия 1.2...

представления чеканились

чеканились это пакет, который использует пигменты для обеспечьте первоклассную подсветку синтаксиса в LaTeX. Например, он позволяет следующий вывод.

fancy LaTeX example

вот минимальный файл для воспроизведения вышеуказанного кода (обратите внимание, что в том числе символы Юникода могут потребовать 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 (пакета)

  • документация, конечно, включены.

  • чеканились теперь поддерживается Джеффри Пур. Версия разработки, включая последнюю .sty file доступен по адресу: github.com/gpoore/minted, и может быть клонирован оттуда.

еще раз спасибо Норману за то, что он побудил меня выпустить этот пакет.

TeX (отлично) Turing-complete, но я уверен, что вам придется написать это расширение самостоятельно. В документации четко указано, что автор оригинала listings осиротел он в 2004 году, и что он не был обновлен с 2006 года. Пакет не был разработан для переопределения форматирования числовых литералов, но вы можете изменить его, изменив определение \lst@ProcessDigit. Если это не сработает, вам придется подробно понять, как " стиль идентификатора" параметры работают, и вам придется дублировать этот механизм для ваших числовых литералов.

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

этой - это пакет, который преобразует исходный код в TeX и LaTeX с подсветкой синтаксиса. Можно добавить пользовательские определения языка программирования.

подсветка поддерживает 100 языков программирования и включает в себя 50 цветовых тем. Он имеет код переформатирования и отступов.

Я не использовал его, чтобы знать, насколько хорошо он работает, но кто-то еще, кого я знаю, сказал, что он работает довольно хорошо. Если у меня будет шанс, я попробую сам и ... видеть.

Comments

    Ничего не найдено.