You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LaTeX lstlisting展示含中文字符的JSON代码报错求助

问题解决:LaTeX listings展示含中文字符的JSON时出错

错误原因

你遇到的三类重复错误,核心是**listings包的literate规则配置错误**:

  • 开头的*通配符会让数字着色规则强制应用到所有字符,包括中文字符,而LaTeX无法将中文解析为数字,触发数值相关错误;
  • 错误定义的comment规则会把JSON字符串里的:"误判为注释,干扰中文内容的解析逻辑;
  • 另外eclipseStrings颜色定义里的0.0是非法值,RGB参数必须是0-255的整数。

修复方案

1. 调整literate规则

移除规则开头的*,让数字着色仅对0-9单独生效,不影响中文字符:

literate=
     {0}{{{\color{numb}0}}}{1}
     {1}{{{\color{numb}1}}}{1}
     {2}{{{\color{numb}2}}}{1}
     {3}{{{\color{numb}3}}}{1}
     {4}{{{\color{numb}4}}}{1}
     {5}{{{\color{numb}5}}}{1}
     {6}{{{\color{numb}6}}}{1}
     {7}{{{\color{numb}7}}}{1}
     {8}{{{\color{numb}8}}}{1}
     {9}{{{\color{numb}9}}}{1}

2. 删除错误的comment定义

JSON语法里没有这种格式的注释,直接删掉以下两行:

comment=[l]{:\ "},
morecomment=[l]{:"},

3. 修正颜色定义&替换兼容字体

  • 将eclipseStrings里的0.0改为整数0;
  • Overleaf环境下bsmi字体支持不佳,换成gbsn(宋体)确保中文正常渲染:
\definecolor{eclipseStrings}{RGB}{42,0,255}
...
\begin{CJK*}{UTF8}{gbsn}

完整修复代码

\documentclass{sigchi}

\usepackage{balance}       % 平衡最后一页内容
\usepackage{graphics}      % 若用EPS,建议替换为graphicx
\usepackage[T1]{fontenc}   % 支持变音符号
\usepackage{txfonts}
\usepackage{mathptmx}
\usepackage[pdflang={en-US},pdftex]{hyperref}
\usepackage{color}
\usepackage{booktabs}
\usepackage{textcomp}
\usepackage{CJKutf8}
\usepackage{microtype}
\usepackage{ccicons}
\usepackage{todonotes}
\usepackage{bera}
\usepackage{listings}
\usepackage{xcolor}
\definecolor{eclipseStrings}{RGB}{42,0,255}
\definecolor{eclipseKeywords}{RGB}{127,0,85}
\colorlet{numb}{magenta!60!black}

\lstdefinelanguage{json}{
    basicstyle=\normalfont\ttfamily,
    stringstyle=\color{eclipseKeywords}, % 字符串样式
    numbers=left,
    numberstyle=\scriptsize,
    stepnumber=1,
    numbersep=8pt,
    showstringspaces=false,
    breaklines=true,
    frame=lines,
    backgroundcolor=\color{white},
    string=[s]{"}{"},
    literate=
         {0}{{{\color{numb}0}}}{1}
         {1}{{{\color{numb}1}}}{1}
         {2}{{{\color{numb}2}}}{1}
         {3}{{{\color{numb}3}}}{1}
         {4}{{{\color{numb}4}}}{1}
         {5}{{{\color{numb}5}}}{1}
         {6}{{{\color{numb}6}}}{1}
         {7}{{{\color{numb}7}}}{1}
         {8}{{{\color{numb}8}}}{1}
         {9}{{{\color{numb}9}}}{1}
}

\begin{document}
\begin{CJK*}{UTF8}{gbsn}

\begin{lstlisting}[language=json,firstnumber=1]
{"src": "中文字", "dst": "中文字"}
\end{lstlisting}

\underline{Example 1}
English: 中文字

\balance{}

\end{CJK*}
\end{document}

内容的提问来源于stack exchange,提问作者Raptor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 07:15:36