我需要在 LaTex 中配置铸造代码突出显示。
剩下的就是将“import”和“as”关键字设为粗体,并更改注释和说明的颜色和字体。此外,还要将“\t”设为粗体。
这是重现我的尝试的 LaTeX 脚本。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{minted}
\usemintedstyle{manni}%{vs}%{pastie}%{autumn}%{emacs}%{tango}%{rrt}%{manni}
\usepackage[a4paper,margin=1in,footskip=0.40in]{geometry}
\usepackage{url}
\begin{document}
\begin{minted}{python}
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import sklearn
# Load the data
oecd_bli = pd.read_csv("oecd_bli_2015.csv", thousands=',')
gdp_per_capita = pd.read_csv("gdp_per_capita.csv",thousands=',',delimiter='\t',
encoding='latin1', na_values="n/a")
\end{minted}
\end{document}
答案1
minted
可以通过编写样式定义文件(或编辑现有样式)来自定义样式中使用的颜色和其他字体属性。此过程实际上不可转移,您需要将样式文件直接放入minted
安装 Pygments(使用的格式化引擎)的目录中。此目录对于每个 Python 版本(3.6、3.7、3.8 等)都不同,并且会随着您更新 Python 而更改。如果您想在不同系统上编译 LaTeX 文档或让其他人可以使用 LaTeX 源,那么您/他们也需要安装样式文件(并具有管理员/sudo 权限)。这也意味着您不能使用基于云的编译器(Overleaf、VerbTeX 等)。因为不允许更改这些系统中的系统目录 - 所以只有在本地安装时它才有效。
另一个更容易的自定义是设置 使用的字体minted
。使用 XeLaTeX 或 LuaLaTeX 时最容易,您可以使用包设置等宽字体(即 使用的字体minted
,以及 等使用的\texttt
字体\verb
)fontspec
。对于 pdfLaTeX,有各种包可以设置文档字体(有时只有单色字体),但选择要有限得多。字体的选择很重要,因为并非所有等宽字体都支持粗体,例如 的默认字体minted
没有粗体,因此即使样式文件指定粗体,也会显示正常粗细。
样式文件位于名为 的文件夹中,例如pygments/styles
。这些是使用 Python 语法指定样式的 Python 文件。如果您不知道 Pygments 的确切安装目录,则可以进行系统范围的搜索,例如 以找到正确的位置。[stylename].py
manni.py
manni.py
在样式文件中有一个类[Stylename]Style
,因此样式的名称(与文件名相同)以大写字母开头,后面跟着Style
一个大写字母。manni.py
该类称为ManniStyle
。对于此类的自定义版本,例如,您可以创建一个名为的文件,custommanni.py
其中包含一个名为的类CustommanniStyle
。
在该类中,会为要突出显示的源代码中的每个标记类别指定一个列表,其中包含颜色和字体属性(粗体、斜体、下划线、方框等)。类别概述如下:https://pygments.org/docs/tokens/如果您有兴趣进行进一步的改变。
请注意,minted
输出缓存到名为 的目录中_minted-[yourtexfile]
。如果您编译 LaTeX 文件,更改样式文件,然后再次编译,则将使用缓存版本而不考虑样式更改。因此,要处理对样式的进一步更改,您需要在每次样式更改后删除此目录,然后再运行 LaTeX。
以下样式文件基于manni.py
两种颜色更改:注释颜色和变量/函数名称的颜色。粗体设置已存在于此样式中,因此当与支持单粗体的字体一起使用时,无需对样式文件进行任何更改即可在输出中获得粗体。
custommanni.py
# -*- coding: utf-8 -*-
"""
pygments.styles.custommanni
~~~~~~~~~~~~~~~~~~~~~
A colorful style, inspired by the terminal highlighting style.
This is a port of the style used in the `php port`_ of pygments
by Manni. The style is called 'default' there.
The current file contains adaptations to the manni style.
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
from pygments.style import Style
from pygments.token import Keyword, Name, Comment, String, Error, \
Number, Operator, Generic, Whitespace
class CustommanniStyle(Style):
"""
A colorful style, inspired by the terminal highlighting style.
"""
background_color = '#f0f3f3'
styles = {
Whitespace: '#bbbbbb',
Comment: 'italic #003333', # changed color
Comment.Preproc: 'noitalic #009999',
Comment.Special: 'bold',
Keyword: 'bold #006699',
Keyword.Pseudo: 'nobold',
Keyword.Type: '#007788',
Operator: '#555555',
Operator.Word: 'bold #000000',
Name: '#060F8C', # added: blue variables/functions
Name.Builtin: '#336666',
Name.Function: '#CC00FF',
Name.Class: 'bold #00AA88',
Name.Namespace: 'bold #00CCFF',
Name.Exception: 'bold #CC0000',
Name.Variable: '#003333',
Name.Constant: '#336600',
Name.Label: '#9999FF',
Name.Entity: 'bold #999999',
Name.Attribute: '#330099',
Name.Tag: 'bold #330099',
Name.Decorator: '#9999FF',
String: '#CC3300',
String.Doc: 'italic',
String.Interpol: '#AA0000',
String.Escape: 'bold #CC3300',
String.Regex: '#33AAAA',
String.Symbol: '#FFCC33',
String.Other: '#CC3300',
Number: '#FF6600',
Generic.Heading: 'bold #003300',
Generic.Subheading: 'bold #003300',
Generic.Deleted: 'border:#CC0000 bg:#FFCCCC',
Generic.Inserted: 'border:#00CC00 bg:#CCFFCC',
Generic.Error: '#FF0000',
Generic.Emph: 'italic',
Generic.Strong: 'bold',
Generic.Prompt: 'bold #000099',
Generic.Output: '#AAAAAA',
Generic.Traceback: '#99CC66',
Error: 'bg:#FFAAAA #AA0000'
}
以下 LaTeX 文件使用此样式并将等宽字体设置为 Ubuntu Mono,它支持粗体(看起来像示例屏幕截图)。当然,您可以将字体更改为其他任何字体。使用 XeLaTeX 或 LuaLaTeX 进行编译。
\documentclass{article}
\usepackage{fontspec}
\setmonofont{Ubuntu Mono}
\usepackage{minted}
\usemintedstyle{custommanni}
\begin{document}
\begin{minted}{python}
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import sklearn
# Load the data
oecd_bli = pd.read_csv("oecd_bli_2015.csv", thousands=',')
gdp_per_capita = pd.read_csv("gdp_per_capita.csv",thousands=',',delimiter='\t',
encoding='latin1', na_values="n/a")
\end{minted}
\end{document}
结果:
要设置适合 pdfLaTeX 的字体,请参见示例在 beamer 框架中为 minted 环境设置字体。
答案2
\documentclass{article}
\usepackage{minted}
\begin{document}
Code will be highlighted with some escape symbols.
\begin{minted}[escapeinside=||]{tex}
\begin{figure}[h!]
\centering
\fbox{|\colorbox{yellow}{\textbackslash\texttt{includegraphics[width=0.5}\textbackslash\texttt{linewidth]}\{excavator\}}|}
\caption{}
\label{}
\end{figure}
\end{minted}
\end{document}