Пакет LaTeX для подсветки синтаксиса кода на разных языках - PullRequest
158 голосов
/ 19 ноября 2008

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

\begin{verbatim}
    <html>
       <head>
           <title>Hello</title>
       </head>
       <body>Hello</body>
    </html>
\end{verbatim}

И это прекрасно работает для отображения кода в моем документе. Но предположим, что я хотел выделить HTML-разметку так, как это сделала бы IDE в выходном документе? Есть ли пакет, который может помочь?

Я хотел бы сделать то же самое для различных языков, таких как Java, C #, HTML, CSS и т. Д.

Ответы [ 7 ]

152 голосов
/ 19 ноября 2008

Вы можете использовать пакет . Он поддерживает много разных языков и есть множество опций для настройки вывода.

\documentclass{article}
\usepackage{listings}

\begin{document}
\begin{lstlisting}[language=html]
<html>
    <head>
        <title>Hello</title>
    </head>
    <body>Hello</body>
</html>
\end{lstlisting}
\end{document}
136 голосов
/ 24 января 2010

Задав подобный вопрос Я создал еще один пакет, который использует Pygments и предлагает гораздо больше опций, чем texments. Она называется minted и является достаточно стабильной и удобной в использовании.

Чтобы продемонстрировать это, вот код, выделенный minted:

Example code

21 голосов
/ 21 сентября 2009

Я рекомендую Pygments . Он принимает фрагмент кода на любом языке и выводит синтаксис с выделенным кодом LaTeX. Он использует пакеты fancyvrb и color для вывода своей продукции. Я лично предпочитаю это листингу пакета. Я думаю, fancyvrb дает гораздо более приятные результаты.

11 голосов
/ 19 ноября 2008

LGrind делает это. Это зрелый пакет LaTeX, который существует с тех пор, как Адам был ковбоем и поддерживает многие языки программирования.

9 голосов
/ 06 ноября 2015

Я бы использовал отчеканный пакет , как упомянуто разработчиком Конрадом Рудольфом, вместо списка . Вот почему:

список пакетов

Пакет листинга по умолчанию не поддерживает цвета. Чтобы использовать цвета, вам необходимо включить пакет цветов и самостоятельно определить правила цвета с помощью команды \ lstset , как описано для кода Matlab здесь .

Кроме того, пакет листинга не работает с юникодом, но вы можете исправить эти проблемы, как описано здесь и здесь .

следующий код

\documentclass{article}
\usepackage{listings}

\begin{document}
\begin{lstlisting}[language=html]
<html>
    <head>
        <title>Hello</title>
    </head>
    <body>Hello</body>
</html>
\end{lstlisting}
\end{document}

создает следующее изображение:

enter image description here

чеканный пакет

Пакет с надписью поддерживает цвета, Unicode и выглядит потрясающе. Однако, чтобы использовать его, вам нужно иметь python 2.6 и pygments . В Ubuntu вы можете проверить свою версию Python в терминале с помощью

python --version

и вы можете установить фрагменты с помощью

sudo apt-get install python-pygments

Затем, поскольку minted выполняет вызовы фрагментов, вам необходимо скомпилировать его с помощью -shell-escape , например,

pdflatex -shell-escape yourfile.tex

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

следующий код

\documentclass{article}
\usepackage{minted}
\begin{document}

\begin{minted}{html}
    <!DOCTYPE html>
    <html>
       <head>
           <title>Hello</title>
       </head>

       <body>Hello</body>
    </html>
\end{minted}
\end{document}

создает следующее изображение:

enter image description here

4 голосов
/ 05 августа 2009

В основном я использую lstlistings в документах, но для цветного вывода (для слайдов) я вместо этого использую фрагменты.

0 голосов
/ 14 ноября 2009

Я бы предложил определить ваш собственный пакет на основе следующего текстового кода; это дает вам полную свободу. http://ubuntuforums.org/archive/index.php/t-331602.html

...