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

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

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

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

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

7 ответов


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

\documentclass{article}
\usepackage{listings}

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

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

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

Example code


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


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


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

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

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

кроме того, пакет листинга не работает хорошо с unicode, но вы можете исправить эти проблемы, как объяснено здесь и здесь.

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

\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 и одном. В Ubuntu вы можете проверить свою версию python в терминале с помощью

python --version

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

sudo apt-get install python-pygments

затем, поскольку minted делает вызовы pygments, вам нужно скомпилировать его с помощью - shell-побег такой

pdflatex -shell-escape yourfile.tex

если вы используете редактор latex, такой как 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


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


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