Як вставити код у документ LaTeX? Чи є щось на кшталт:
\begin{code}## Heading ##
...
\end{code}
Єдине, що мені справді потрібно - це відступ та шрифт фіксованої ширини. Підсвічування синтаксису може бути приємним, хоча це точно не потрібно.
Як вставити код у документ LaTeX? Чи є щось на кшталт:
\begin{code}## Heading ##
...
\end{code}
Єдине, що мені справді потрібно - це відступ та шрифт фіксованої ширини. Підсвічування синтаксису може бути приємним, хоча це точно не потрібно.
Відповіді:
Використовуйте 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}
Ось результат:
figure
може досягти ефекту.
Ви також можете використовувати дослівне середовище
\begin{verbatim}
your
code
example
\end{verbatim}
Ось як додати вбудований код:
Ви можете додати вбудований код за допомогою {\tt code }
або \texttt{ code }
. Якщо ви хочете відформатувати вбудований код, то найкраще зробити власну команду
\newcommand{\code}[1]{\texttt{#1}}
Також зауважте, що блоки коду можна завантажувати з інших файлів
\lstinputlisting[breaklines]{source.c}
breaklines
не потрібно, але я вважаю це корисним. Майте на увазі, що вам доведеться вказати \usepackage{
списки }
для цього.
Оновлення: Пакет списків також включає \lstinline
команду, яка має ті самі функції виділення синтаксису, що \lstlisting
і \lstinputlisting
команди та (див. Відповідь Cloudanger про деталі конфігурації). Як вже згадувалося в кількох інших відповідях, є також відрізаний пакет, який забезпечує \mintinline
команду. Мовляв \lstinline
, \mintinline
надає те саме підсвічування синтаксису, що і звичайний блокований код коду:
\documentclass{article}
\usepackage{minted}
\begin{document}
This is a sentence with \mintinline{python}{def inlineCode(a="ipsum)}
\end{document}
Спеціалізовані пакети, такі як minted
, який спирається на Pygments для форматування, пропонують різні переваги перед listings
пакетом. Цитувати minted
посібник,
Пігменти надають значно покращене підсвічування синтаксису порівняно зі звичайними пакунками. Наприклад, списки в основному висвітлюють лише рядки, коментарі та ключові слова. З іншого боку, пігменти можна повністю налаштувати, щоб виділити будь-який маркер, який може підтримувати мова-джерело. Це може включати спеціальні послідовності форматування всередині рядків, чисел, різні види ідентифікаторів та екзотичні конструкції, такі як HTML-теги.
-shell-escape
директиви - це, у кращому випадку, незначна модифікація існуючих систем побудови, а в гіршому - несумісна з деякими налаштуваннями безпеки користувачів.
Використовуйте карбовану .
Це пакет, який сприяє виразному підкресленню синтаксису в LaTeX за допомогою потужної бібліотеки Pygments . Пакет також пропонує варіанти налаштування виділеного вихідного вихідного коду за допомогою fancyvrb .
Це набагато більш розвинене та налаштоване, ніж будь-який інший пакет!
-shell-escape
для деяких людей це може бути смоктанням.
Карбувалися workes в наступних двох сторінках , 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}
Вихід:
Оскільки це ще не було згадано тут, можливо, варто додати ще один варіант, пакет 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}