LaTeX 插入代码可以使用的宏包有 verbatim、fancyvrb、listings 以及 minted。个人最推荐使用 minted。

verbatim

verbatim 没有语法高亮功能,只是显示一个等宽字体的输出。查看 Overleaf 示例

% Preamble
\usepackage{verbatim}
% Body
\begin{verbatim}
Text enclosed inside \texttt{verbatim} environment
is printed directly
and all \LaTeX{} commands are ignored.
\end{verbatim}

fancyvrb

fancyvrb 是 verbatim 的增强版,增加了显示行号和代码块边框的功能。

% Preamble
\usepackage{fancyvrb}
\usepackage{xcolor} % 用到了 \color 命令
% Body
% 设置在代码块左部显示行号,用方框包围代码块,代码块显示为红色
\begin{Verbatim}[numbers=left, frame=single, formatcom=\color{black}]
#include <iostream> int main() {
std::cout << "Hello, world!" << std::endl;
return 0;
}
\end{Verbatim}

listings

listings 则更为强大,带有语法高亮、自定义风格等功能。查看 Overleaf 示例

% Preamble
\usepackage{xcolor} % 为了渲染颜色,需要使用 xcolor 包
\usepackage{listings} % 渲染代码块
% Body

% 定义颜色
\definecolor{codegreen}{rgb}{0,0.6,0}
\definecolor{codegray}{rgb}{0.5,0.5,0.5}
\definecolor{codepurple}{rgb}{0.58,0,0.82}
\definecolor{backcolour}{rgb}{0.95,0.95,0.92} % 定义 listings 风格,可以定义多个
\lstdefinestyle{mystyle}{
% backgroundcolor=\color{backcolour}, % 背景色
commentstyle= \color{red!50!green!50!blue!50}, % 注释的颜色
keywordstyle= \color{blue!70}, % 关键字/程序语言中的保留字颜色
numberstyle=\tiny\color{codegray}, % 左侧行号显示的颜色
stringstyle=\color{codepurple},
basicstyle=\ttfamily\footnotesize,
breakatwhitespace=false,
breaklines=true, % 对过长的代码自动换行
captionpos=b,
keepspaces=true,
numbers=left, % 在左侧显示行号
numbersep=5pt,
showspaces=false,
showstringspaces=false, % 不显示字符串中的空格
showtabs=false,
tabsize=2,
frame=single % [none | single | shadowbox] 显示边框
} \lstset{style=mystyle} % 使用 listings 风格 \begin{lstlisting}[language=Python]
def main():
print("Hello, world!")
return 0
\end{lstlisting}

参考:Code listing | Overleaf

minted(推荐)

minted 是最方便好用的一款代码格式化宏包,开箱即用,只需配置目标语言即可。不过它需要 Python Pygments 包的依赖,以及需要启用 shell-escape 选项。查看 Overleaf 示例

安装 Pygments 包。以下命令选其一。

sudo apt install install python3-pygments
pip install pygments

启用 shell-escape 选项:

echo "shell_escape = t" >> /usr/local/texlive/2024/texmf.cnf

# 或者,在每次编译的时候指定 -shell-escape 选项
latexmk -shell-escape main.tex

注意将 2024 改为你当前在使用的 TeX Live 版本

如果你的编译套件不是 TeX Live,那么开启 shell-escape 选项的方法可以参考 How can I enable shell-escape? | StackExchange

% Preamble
\usepackage[outputdir=build]{minted}
% Body
\usemintedstyle{vs} % 切换风格 \begin{minted}{python}
def main():
print("Hello, world!")
return 0
\end{minted}

如果你在编译时指定了特定的输出目录,才需要在引入 minted 包时提供 outputdir 选项。这里指定的输出目录是 build

参考:Code Highlighting with minted | Overleaf

LaTeX 插入代码的更多相关文章

  1. Bootstrap css栅格 + 网页中插入代码+css表格

    设计达人 http://www.shejidaren.com/30-minimal-app-icons.html CSS栅格: <!DOCTYPE html> <html lang= ...

  2. 使用Markdown在博客里插入代码

    今天尝试了一下在线使用Markdown编辑器写博客,发现想要实现下面这样的效果还真得折腾一会儿. <html> <head> <meta charset="ut ...

  3. sphinx插入代码

    示例的Python源代码或者交互界面都可以使用标准reST模块实现.在正常段落后面跟着 :: 开始,再加上适当缩进. 交互界面需包含提示及Python代码的输出. 交互界面没有特别的标记. 在最后一行 ...

  4. 怎样在Word中插入代码并保持代码原始样式不变

    怎样在Word中插入代码并保持样式不变 我们有时候需要在word中添加一段我们写的代码,但是把代码粘贴到word文档中之后就发现所有的代码的样子都变了,我们可以采用下边的方法来实现保持代码原来的样式和 ...

  5. PE头的应用---插入代码到EXE或DLL文件中

    三.代码实现(DELPHI版本),采用第三种方式实现代码插入. 1. 定义两个类,一个用来实现在内存中建立输入表:一个用来实现对PE头的代码插入. DelphiCode: const MAX_SECT ...

  6. 编程算法 - 有序双循环链表的插入 代码(C)

    有序双循环链表的插入 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 有序双循环链表的插入, 须要找到插入位置, 能够採用, 两个指针, 一个在前, 一 ...

  7. xhEditor实现插入代码功能

    如果大家经常使用CSDN或者其他技术博客,都会有插入程序代码或脚本功能 开源中国 CSDN 这里介绍xhEditor实现插入代码功能,对xhEditor进行插件扩展 一.首先定义插件样式 <st ...

  8. 在word中如何美观地插入代码

    打开这个网站 http://www.planetb.ca/syntax-highlight-word 进去后我们看到下面的界面 中间的空白文本框,可以插入代码,下面可以选择代码种类,最后点击Show ...

  9. LATeX 插入脚注

    LATeX 插入脚注: 使用  \footnote{...注释内容} 命令: To maximize the lower-bound $ we employ conjugate gradient me ...

  10. 在word中优雅地插入代码

    PlanetB:带行号 http://www.planetb.ca/syntax-highlight-word   Pygments(推荐):不带行号,多种样式可选 http://pygments.o ...

随机推荐

  1. SpringBoot集成日志框架

    springboot默认日志是打印在console中,不会保存在文件中.我们项目上线肯定要保存日志用于分析问题的. 使用xml配置日志保存 并不需要pom配置slf4j依赖,starter里面已经配置 ...

  2. Docker使用Dockerfile部署项目

    什么是dockerfile? Dockerfile是一个包含用于组合映像的命令的文本文档.可以使用在命令行中调用任何命令. Docker通过读取Dockerfile中的指令自动生成镜像. 如何通过do ...

  3. SpringCloud学习篇

    什么是SpringCloud Spring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成.Spring cloud Task,一个生 ...

  4. 4. 简明说一下 CSS link 与 @import 的区别和用法?

    两者的基本语法 link语法结构 <link href="外部CSS文件的URL路径" rel="stylesheet" type="text/ ...

  5. Swift开发基础07-内存布局

    了解Swift的内存布局和底层原理对于编写高性能和内存高效的应用非常重要.接下来,我将更详细地介绍Swift的内存管理机制和一些底层实现细节,包括内存布局.ARC(自动引用计数).引用类型和值类型的区 ...

  6. [oeasy]python0010 - python虚拟机解释执行py文件的原理

    ​ 解释运行程序 回忆上次内容 我们这次设置了断点 设置断点的目的是更快地调试 调试的目的是去除​​bug​​ 别害怕​​bug​​ 一步步地总能找到​​bug​​ 这就是程序员基本功 调试​​deb ...

  7. Vue 中引用第三方js总结

    vue中引用第三方js总结 By:授客 QQ:1033553122 实践环境 win10 Vue 2.9.6 本文以引用jsmind为例,讲解怎么在vue中引用第三方js类库 基础示例 1.把下载好的 ...

  8. MFC--教你如何使用画刷(2)

    接下来我们用另外一个类CClientDC来实现我们的画线功能. CClientDC是由CDC派生出来的一个类,在函数构造的时候就会去调用GetDC来获得一个句柄,而在析构的时候便调用ReleaseDC ...

  9. 记一次springboot整合rabbitMQ的list序列化问题

    问题:平时传一个类的时候都会继承Serializable实现正确传输,这次我把list<Object>直接丢成了message,导致rabbitMQ不能序列化对象.报错 org.sprin ...

  10. linux中whereis、which、find、locate的区别

    linux中whereis.which.find.locate的区别 1. find       fan路名含 find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件. find的使用实例 ...