如何在 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}
结果如下:
https://i.stack.imgur.com/wKKMy.png
您还可以使用逐字环境
\begin{verbatim}
your
code
example
\end{verbatim}
以下是添加内联代码的方法:
您可以使用 {\tt code }
或 \texttt{ code }
添加内联代码。如果您想格式化内联代码,那么最好制作自己的命令
\newcommand{\code}[1]{\texttt{#1}}
另外,请注意,代码块可以从其他文件加载
\lstinputlisting[breaklines]{source.c}
breaklines
不是必需的,但我觉得它很有用。请注意,您必须为此指定 \usepackage{
listings }
。
更新:列表包还包括 \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}
mintinline
时是否可以删除字符之间的空格?
依赖 Pygments 进行格式化的专用包(例如 minted
)与 listings
包相比具有多种优势。引用 minted
手册,
与传统包相比,Pygments 提供了优越得多的语法高亮显示。例如,列表基本上只突出显示字符串、评论和关键字。另一方面,Pygments 可以完全定制以突出显示源语言可能支持的任何标记类型。这可能包括字符串、数字、不同类型的标识符和奇异结构(如 HTML 标记)中的特殊格式序列。
-shell-escape
指令调用 latex 的要求充其量是对现有构建系统的微小修改,最坏的情况是与某些用户的安全偏好不兼容。
Minted,无论是来自 GitHub 还是 CTAN, the Comprehensive TeX Archive Network,都适用于 Overleaf、TeX Live 和 MiKTeX。
它需要安装 Python 包 Pygments;这在上述任一来源的文档中都有解释。尽管 Pygments 将自己标榜为 Python 语法荧光笔,但 Minted 保证覆盖数百种其他语言。
例子:
\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}
输出:
https://i.stack.imgur.com/mBbVD.png
如果您的代码在 Python 中,我不必安装 Python 包,那么一种非常简单的方法如下:
\documentclass[11pt]{article}
\usepackage{pythonhighlight}
\begin{document}
The following is some Python code
\begin{python}
# A comment
x = [5, 7, 10]
y = 0
for num in x:
y += num
print(y)
\end{python}
\end{document}
https://i.stack.imgur.com/UlQi0.png
不幸的是,这只适用于 Python。
由于此处尚未提及,因此可能值得再添加一个选项,包 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}
figure
中可以达到效果。