Вставка кода в этот документ LaTeX с отступом - PullRequest
368 голосов
/ 04 июля 2010

Как вставить код в документ LaTeX?Есть ли что-то вроде:

\begin{code}## Heading ##
...
\end{code}

Единственное, что мне действительно нужно, это отступ и шрифт фиксированной ширины.Подсветка синтаксиса может быть хорошей, хотя она определенно не требуется.

Ответы [ 7 ]

566 голосов
/ 04 июля 2010

Использование listings пакета.

Простая конфигурация для заголовка LaTeX (до \begin{document}):

\usepackage{listings}
\usepackage{color}

\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}

\lstset{frame=tb,
  language=Java,
  aboveskip=3mm,
  belowskip=3mm,
  showstringspaces=false,
  columns=flexible,
  basicstyle={\small\ttfamily},
  numbers=none,
  numberstyle=\tiny\color{gray},
  keywordstyle=\color{blue},
  commentstyle=\color{dkgreen},
  stringstyle=\color{mauve},
  breaklines=true,
  breakatwhitespace=true,
  tabsize=3
}

Вы можете изменить язык по умолчанию в серединедокумента с \lstset{language=Java}.

Пример использования в документе:

\begin{lstlisting}
// Hello.java
import javax.swing.JApplet;
import java.awt.Graphics;

public class Hello extends JApplet {
    public void paintComponent(Graphics g) {
        g.drawString("Hello, world!", 65, 95);
    }    
}
\end{lstlisting}

Вот результат:

Example image

137 голосов
/ 04 июля 2010

Вы также можете использовать дословную среду

\begin{verbatim}
your
code
example
\end{verbatim}
105 голосов
/ 25 января 2014

Вот как добавить встроенный код:

Вы можете добавить встроенный код с помощью {\tt code } или \texttt{ code }. Если вы хотите отформатировать встроенный код, то лучше всего сделать собственную команду

\newcommand{\code}[1]{\texttt{#1}}

Также обратите внимание, что блоки кода можно загружать из других файлов с помощью

\lstinputlisting[breaklines]{source.c}

breaklines не требуется, но я считаю это полезным. Имейте в виду, что для этого вам придется указать \usepackage{ списки }.

30 голосов
/ 04 июля 2010

Специализированные пакеты, такие как minted, в которых для форматирования используются фрагменты, предлагают различные преимущества по сравнению с пакетом listings. Цитировать из руководства minted,

Pygments обеспечивает намного лучшую подсветку синтаксиса по сравнению с обычными пакетами. Например, списки в основном только выделяют строки, комментарии и ключевые слова. С другой стороны, фрагменты можно полностью настроить, чтобы выделить любой вид токена, который может поддерживать исходный язык. Это может включать специальные последовательности форматирования внутри строк, чисел, различные виды идентификаторов и экзотические конструкции, такие как HTML-теги.

10 голосов
/ 26 января 2014

Использование Minted .

Это пакет, который облегчает выразительную подсветку синтаксиса в LaTeX, используя мощную библиотеку Pygments .Пакет также предоставляет опции для настройки выделенного вывода исходного кода, используя fancyvrb .

Это гораздо более развито и настраиваемо, чем любой другой пакет!

4 голосов
/ 06 августа 2018

Поскольку это еще не было упомянуто здесь, возможно, стоит добавить еще один параметр, пакет spverbatim (без подсветки синтаксиса):

\documentclass{article}
\usepackage{spverbatim}

\begin{document}

\begin{spverbatim}
  Your code here
\end{spverbatim}

\end{document}

Также, если подсветка синтаксиса не требуется, пакет alltt:

\documentclass{article}
\usepackage{alltt}

\begin{document}

\begin{alltt}
  Your code here
\end{alltt}

\end{document}
4 голосов
/ 04 июля 2010

Использование Pygments !

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...