Пакет LaTeX для синтаксического выделения кода на разных языках

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

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

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

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

Ответ 1

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

\documentclass{article}
\usepackage{listings}

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

Ответ 2

После запроса подобного вопроса Ive создал другой пакет, который использует Pyigs, и предлагает еще несколько опций, чем texments. Его называют minted и довольно стабильны и применимы.

Просто, чтобы показать это, heres код выделен с чеканкой:

Example code

Ответ 3

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

Ответ 4

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

Ответ 5

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

Ответ 6

Я бы использовал отчеканенный пакет, как упоминалось у разработчика Konrad Rudolph вместо листинг пакета. Вот почему:

листинг пакета

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

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

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

\documentclass{article}
\usepackage{listings}

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

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

введите описание изображения здесь

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

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

python --version

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

sudo apt-get install python-pygments

Затем, так как отчеканенные вызовы пигментов, вам нужно скомпилировать его с помощью -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}

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

введите описание изображения здесь