如何在LaTeX文档中插入代码?比如:

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

我唯一真正需要的是缩进和固定宽度的字体。语法高亮显示可能很好,尽管它绝对不是必需的。


当前回答

如果你的代码是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}

它看起来像:

不幸的是,这只适用于Python。

其他回答

使用铸造。

它是一个包,可以使用强大的pytings库在LaTeX中突出显示表达性语法。该包还提供了使用fancyvrb定制突出显示的源代码输出的选项。

它比任何其他包都更进化和可定制!

使用清单包。

乳胶头的简单配置(在\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}

结果如下:

Minted,无论是来自GitHub还是CTAN,综合TeX档案网络,工作在Overleaf, TeX Live和MiKTeX。

它需要安装Python包pyptions;这在上面两种源代码的文档中都有解释。尽管pyptions标榜自己是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}

输出:

如果你的代码是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}

它看起来像:

不幸的是,这只适用于Python。

下面是如何添加内联代码:

您可以使用{\tt code}或\texttt{code}添加内联代码。如果您想格式化内联代码,那么最好创建自己的命令

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

另外,请注意,代码块可以从其他文件中加载

\lstinputlisting[breaklines]{source.c}

折线不是必需的,但我发现它很有用。注意,您必须为此指定\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}