LaTeX 插入代码
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}
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 插入代码的更多相关文章
- Bootstrap css栅格 + 网页中插入代码+css表格
设计达人 http://www.shejidaren.com/30-minimal-app-icons.html CSS栅格: <!DOCTYPE html> <html lang= ...
- 使用Markdown在博客里插入代码
今天尝试了一下在线使用Markdown编辑器写博客,发现想要实现下面这样的效果还真得折腾一会儿. <html> <head> <meta charset="ut ...
- sphinx插入代码
示例的Python源代码或者交互界面都可以使用标准reST模块实现.在正常段落后面跟着 :: 开始,再加上适当缩进. 交互界面需包含提示及Python代码的输出. 交互界面没有特别的标记. 在最后一行 ...
- 怎样在Word中插入代码并保持代码原始样式不变
怎样在Word中插入代码并保持样式不变 我们有时候需要在word中添加一段我们写的代码,但是把代码粘贴到word文档中之后就发现所有的代码的样子都变了,我们可以采用下边的方法来实现保持代码原来的样式和 ...
- PE头的应用---插入代码到EXE或DLL文件中
三.代码实现(DELPHI版本),采用第三种方式实现代码插入. 1. 定义两个类,一个用来实现在内存中建立输入表:一个用来实现对PE头的代码插入. DelphiCode: const MAX_SECT ...
- 编程算法 - 有序双循环链表的插入 代码(C)
有序双循环链表的插入 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 有序双循环链表的插入, 须要找到插入位置, 能够採用, 两个指针, 一个在前, 一 ...
- xhEditor实现插入代码功能
如果大家经常使用CSDN或者其他技术博客,都会有插入程序代码或脚本功能 开源中国 CSDN 这里介绍xhEditor实现插入代码功能,对xhEditor进行插件扩展 一.首先定义插件样式 <st ...
- 在word中如何美观地插入代码
打开这个网站 http://www.planetb.ca/syntax-highlight-word 进去后我们看到下面的界面 中间的空白文本框,可以插入代码,下面可以选择代码种类,最后点击Show ...
- LATeX 插入脚注
LATeX 插入脚注: 使用 \footnote{...注释内容} 命令: To maximize the lower-bound $ we employ conjugate gradient me ...
- 在word中优雅地插入代码
PlanetB:带行号 http://www.planetb.ca/syntax-highlight-word Pygments(推荐):不带行号,多种样式可选 http://pygments.o ...
随机推荐
- Linux内存不够了?看看如何开启虚拟内存增加内存使用量
1.为什么要使用虚拟内存 当我们没有多余的钱去购买大内存的云服务器时,但是当前服务器里面的软件和程序运行的比较多导致内存不够用了.这个时候可以通过增加虚拟内存来扩大内存容量.但是在启用虚拟内存时,需要 ...
- OpenCV程序:OCR文档扫描
一.文档扫描 代码 import cv2 import numpy as np #==============================计算输入图像的四个顶点的坐标=============== ...
- VulnHub_DC-3渗透流程
VulnHub_DC-3 DC-3 是另一个特意建造的易受攻击的实验室,旨在获得渗透测试领域的经验. 与之前的 DC 版本一样,这个版本是为初学者设计的,尽管这一次只有一个flag.一个入口点并且根本 ...
- SpringBoot可视化接口开发工具magic-api
magic-api简介 magic-api是一个基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口,无需定义Controller.Service ...
- Linux相关知识备忘(随时更新)
1.dpkg Debian Packager,Debian包管理器.可以方便的对软件进行安装更新和移除. (1)安装 dpkg -i xx.deb (2)卸载,但不删除配置文件 dpkg -r xx ...
- Arctic开源!网易数帆×华泰证券,推动湖仓一体落地
数字化转型趋势下,各行业对数据生产力的探索与追求逐步进入深水区.现实的问题是,企业数据仓库存储.数据湖多种技术并存的局面将长期存在,如何才能摆脱技术协同的内耗,让大数据直通生产力的彼岸? 8月11日下 ...
- [oeasy]python0083_十进制数如何存入计算机_八卦纪事_BCD编码_Binary_Coded_Decimal
编码进化 回忆上次内容 上次 研究了 视频终端的 演化 从VT05 到 VT100 从 黑底绿字 到 RGB 24位真彩色 形成了 VT100选项 从而 将颜色 数字化 了 生活中我们更常用 10个数 ...
- 用ssh同时push 项目到github和gitee的方法
分别为两个网站声称pubkey cd ./ssh ssh-keygen -t rsa -C "oeasy@oeasy.org" -f "github_id_rsa&q ...
- C# 常用类和命名空间
Array类 用括号声明数组是C#中使用Array类的记号.在后台使用C#语法,会创建一个派生于抽象基类Array的新类.这样,就可以使用Array类为每个C#数组定义的方法和属性了. Array类实 ...
- vue3:如何进行组件间的信息传递
这里以父组件--主页面 | 子组件1--对话框 | 子组件2--按钮为例 父组件--主页面 import {provide, ref} from "vue"; # 创建对象,并且其 ...