Пакет LaTeX для подсветки синтаксиса кода на разных языках
Я ищу пакет LaTeX, который делает подсветку синтаксиса в коде. Например, сейчас я использую дословный блок для написания кода:
\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
и довольно стабильный и годный к употреблению.
Чтобы показать это, вот код, выделенный minted:
Я рекомендую Пигменты. Он принимает фрагмент кода на любом языке и выводит синтаксис с выделенным кодом LaTeX. Он использует пакеты fancyvrb и color для вывода результатов. Я лично предпочитаю это для листинга пакета. Я думаю, что fancyvrb создает гораздо более приятные результаты.
Я бы использовал отчеканенный пакет, как упомянуто разработчиком Конрадом Рудольфом, вместо пакета листинга. Вот почему:
распечатка пакета
Пакет листинга по умолчанию не поддерживает цвета. Чтобы использовать цвета, вам необходимо включить пакет цветов и самостоятельно определить правила цвета с помощью команды \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}
производит следующее изображение:
мятный пакет
Пакет с надписью поддерживает цвета, 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}
производит следующее изображение:
LGrind делает это. Это зрелый пакет LaTeX, который существует с тех пор, как Адам был ковбоем и поддерживает многие языки программирования.
В основном я использую lstlistings в документах, но для цветного вывода (для слайдов) я вместо этого использую фрагменты.
Я бы предложил определить свой собственный пакет на основе следующего текстового кода; это дает вам полную свободу. http://ubuntuforums.org/archive/index.php/t-331602.html