Пакет 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}
создает следующее изображение:
![введите описание изображения здесь]()
Ответ 7
Я бы предложил определить ваш собственный пакет на основе следующего кода tex; это дает вам полную свободу. http://ubuntuforums.org/archive/index.php/t-331602.html