为什么直接在minted的escapeinside环境下使用textcolor的RGB模式会报错?

发布于 2025-09-17 13:51:59

在记笔记时发现有些SQL语言的关键字并未能被 minted 环境识别出来,被当成普通字符处理,输出为黑色。但强迫症让我想去手动修改未被上色的关键字以保证笔记效果,昨日查询资料时得知 minted 包的 escapeinside 键能够起到临时启动转义的效果,所以想在中间使用 \textcolor 命令的 RGB 模式对关键字进行上色,但是编译报错,报错结果如下:
1.png

后来找到另外一种解决办法,使用 \definecolorRGB 模式预先定义好颜色,再使用 \textcolor 就没问题了。但是想弄清楚前者为什么会出现编译报错的原因,现已上传最小工作实例,未注释部分为原有的报错代码,注释部分为后续找到的解决方案。
本人LaTeX小白,恳请各位大佬指点一下,谢谢!

MWE如下:

\documentclass{ctexart}

\usepackage{color}
\usepackage[svgnames]{xcolor}
\usepackage{minted}
% \definecolor{codegreen}{RGB}{0,128,0}

\begin{document}

\begin{minted}[bgcolor = gray!10, breaklines = true, escapeinside=||]{SQL}
  |\textcolor[RGB]{0,128,0}{text}|
\end{minted}

% \begin{minted}[bgcolor = gray!10, breaklines = true, escapeinside=||]{SQL}
%   |\textcolor{codegreen}{text}|
% \end{minted}

\end{document}

查看更多

关注者
0
被浏览
82
Sagittarius Rover
Sagittarius Rover 11小时前
这家伙很懒,什么也没写!

更建议从源头上解决问题。

在记笔记时发现有些SQL语言的关键字并未能被 minted 环境识别出来,被当成普通字符处理,输出为黑色。但强迫症让我想去手动修改未被上色的关键字以保证笔记效果。例如DATABASE关键字无法被SQL正确识别为高亮。

注意到minted是基于pygments的,因此所有支持的语言和关键字应该查看这里

我没有仔细搜索,但是

  • DATABASES 不是 SQL的关键字
  • DATABASESMySQL的关键字

所以可以考虑治本...

\documentclass[fontset=fandol]{ctexart}
\usepackage[margin=1cm]{geometry}
\usepackage[svgnames]{xcolor}
\usepackage{minted}
\begin{document}

\begin{minted}[
    bgcolor = gray!10,
    breaklines = true
]{MySQL}
    DATABASES Explorer
    -- 按产品类别和季度统计销售数据
    SELECT
    product_category,  -- 产品类别
    quarter,           -- 季度(1-4)
    total_sales,       -- 总销售额
    order_count,       -- 订单数量
    avg_order_value    -- 平均客单价(总销售额/订单数)
    FROM (
    -- 子查询:计算每个订单的销售额,并提取年份和季度
    SELECT
        product_category,
        -- 提取订单日期的年份和季度(兼容 MySQL、PostgreSQL、SQL Server)
        DATE_FORMAT(order_date, '%Y') AS year,
        QUARTER(order_date) AS quarter,
        order_id,
        SUM(unit_price * quantity) AS order_sales  -- 单订单销售额 = 单价×数量
    FROM
        sales
    WHERE
        order_date >= '2023-01-01'  -- 筛选2023年数据
        AND order_date < '2024-01-01'
        AND unit_price > 0  -- 排除异常数据(单价为0的订单)
    GROUP BY
        product_category, year, quarter, order_id  -- 按订单粒度聚合
    ) AS order_details
    -- 外层聚合:按类别和季度统计
    GROUP BY
    product_category, quarter
    -- 按类别升序、季度升序排序
    ORDER BY
    product_category ASC,
    quarter ASC;
\end{minted}

\end{document}

image.png

至于如何「自定义minted的关键字」,按照这里的说法,这似乎不是一个LaTeX的问题,而是一个Python层面的问题....

有空可以研究一下补上,挖坑😀

1 个回答

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览