在 LaTeX 中配置 minted 样式以突出显示代码

在 LaTeX 中配置 minted 样式以突出显示代码

我需要在 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字体\verbfontspec。对于 pdfLaTeX,有各种包可以设置文档字体(有时只有单色字体),但选择要有限得多。字体的选择很重要,因为并非所有等宽字体都支持粗体,例如 的默认字体minted没有粗体,因此即使样式文件指定粗体,也会显示正常粗细。

样式文件位于名为 的文件夹中,例如pygments/styles。这些是使用 Python 语法指定样式的 Python 文件。如果您不知道 Pygments 的确切安装目录,则可以进行系统范围的搜索,例如 以找到正确的位置。[stylename].pymanni.pymanni.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}

相关内容