我如何在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}
以下是结果:
您还可以使用verbatim环境
\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
提供与常规minted代码块相同的语法高亮:
\documentclass{article}
\usepackage{minted}
\begin{document}
This is a sentence with \mintinline{python}{def inlineCode(a="ipsum)}
\end{document}
mintinline
时,是否可能去除字符之间的空格? - alper专业软件包如 minted
,依赖于Pygments进行格式化,相比于 listings
软件包,提供了各种优势。引用自 minted
手册:
与传统的软件包相比,Pygments提供了更加出色的语法高亮。例如,listings基本上只突出显示字符串,注释和关键字。另一方面,Pygments可以完全定制以突出显示源语言可能支持的任何标记类型,这可能包括字符串内部的特殊格式序列、数字、不同类型的标识符以及像HTML标记这样的奇异结构。
Minted(代码高亮插件),不论是从GitHub还是CTAN,Comprehensive TeX Archive Network下载,都可以在Overleaf、TeX Live和MiKTeX中使用。
使用Minted需要安装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}
输出:
pythonhilight
包开箱即用,效果不错。在解决安装pygments
时遇到问题时,我使用它一段时间。然而,如果您想要控制字体大小、语法高亮、背景颜色、边框、是否包括行号以及位置,或者在双列页面中更好地放置短代码片段,那么minted
是一个更好的选择。此外,PyCharm对minted
的支持更好:它不会抱怨minted
环境中的“_”。 - hlongmore既然这里还没有提到,那么可能值得增加另一个选项,使用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}