Вставка кода в этот документ LaTeX с отступом
Как вставить код в документ LaTeX? Есть ли что-то вроде:
\begin{code}## Heading ##
...
\end{code}
Единственное, что мне действительно нужно, это отступ и шрифт фиксированной ширины. Подсветка синтаксиса может быть хорошей, хотя это определенно не требуется.
Ответы
Ответ 1
Используйте пакет 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]()
Ответ 2
Вы также можете использовать среду verbatim
\begin{verbatim}
your
code
example
\end{verbatim}
Ответ 3
Вот как добавить встроенный код:
Вы можете добавить встроенный код с помощью {\tt code }
или \texttt{ code }
. Если вы хотите отформатировать встроенный код, лучше всего создать собственную команду
\newcommand{\code}[1]{\texttt{#1}}
Также обратите внимание, что блоки кода можно загружать из других файлов с помощью
\lstinputlisting[breaklines]{source.c}
breaklines
не требуется, но я считаю это полезным. Имейте в виду, что для этого вам нужно будет указать \usepackage{
списки }
.
Обновление: Пакет списков также включает команду \lstinline
, которая имеет те же функции подсветки синтаксиса, что и команды \lstlisting
и \lstinputlisting
(подробности конфигурации см. в ответе Cloudanger). Как уже упоминалось в нескольких других ответах, существует также пакет minted, который предоставляет команду \mintinline
. Как и \lstinline
, \mintinline
обеспечивает ту же подсветку синтаксиса, что и обычный кодированный блок кода:
\documentclass{article}
\usepackage{minted}
\begin{document}
This is a sentence with \mintinline{python}{def inlineCode(a="ipsum)}
\end{document}
Ответ 4
Специализированные пакеты, такие как minted
, которые полагаются на Pyigs для форматирования, предлагают различные преимущества перед пакетом listings
. Чтобы указать из руководства minted
,
Пигменты обеспечивают гораздо более сильную подсветку синтаксиса по сравнению с обычными пакетами. Например, в списках в основном выделяются строки, комментарии и ключевые слова. Пигменты, с другой стороны, могут быть полностью настроены, чтобы выделить любой токен, который может поддерживать исходный язык. Это может включать специальные последовательности форматирования внутри строк, чисел, различных типов идентификаторов и экзотических конструкций, таких как HTML-теги.
Ответ 5
Используйте чеканку.
Это пакет, который облегчает выразительную подсветку синтаксиса в LaTeX, используя мощную библиотеку Pygments. Пакет также предоставляет опции для настройки выделенного вывода исходного кода с помощью fancyvrb.
Это гораздо более развитый и настраиваемый, чем любой другой пакет!
Ответ 6
Поскольку это еще не было упомянуто здесь, возможно, стоит добавить еще одну опцию, пакет 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}
Ответ 7
Используйте Pygments!
Ответ 8
Чеканка работает в Overleaf, TeX Live и MiKTeX.
Пример:
\documentclass{article}
\usepackage{minted}
\begin{document}
\begin{minted}[mathescape, linenos]{python}
# Note: $\pi=\lim_{n\to\infty}\frac{P_n}{d}$
title = "Hello World"
sum = 0
for i in range(10):
sum += i
\end{minted}
\end{document}
Выход:
![enter image description here]()