使用listings
宏包显示python
代码块,进行如下配置:
\lstset{
basicstyle=\ttfamily, % 设置字体族
breaklines=true, % 自动换行
keywordstyle=\bfseries\color{NavyBlue}, % 设置关键字为粗体,颜色为 NavyBlue
keywords={as, and, assert, break, class, continue, def, del, elif, else,
except, exec, finally, for, from, global, if, import, in, is,
lambda, not, or, pass, print, raise, return, try, while, with, yield}, % 设置更多的关键字,用逗号分隔
emph={}, % 指定强调词,如果有多个,用逗号隔开
emphstyle=\bfseries\color{Rhodamine}, % 强调词样式设置
commentstyle=\itshape\color{black!50!white}, % 设置注释样式,斜体,浅灰色
stringstyle=\bfseries\color{PineGreen!90!black}, % 设置字符串样式
columns=flexible,
numbers=left, % 显示行号在左边
numbersep=1em, % 设置行号的具体位置
numberstyle=\footnotesize, % 缩小行号
frame=single, % 边框
framesep=0em % 设置代码与边框的距离
}
然后我写了这么一串代码:
\begin{lstlisting}[language=Python]
import matplotlib.pyplot as plt # 绘制图形的库
from matplotlib_venn import venn2 # 绘制二元韦恩图的库,如果是三元则是 venn3
plt.figure(figsize=(8, 8)) # 初始化设置图形的尺寸
\end{lstlisting}
编译后我发现 as
没有被当做关键字看待,我设置了半天 keyword
,问 AI 也无济于事。
我的 listings
宏包版本是 1.10
。
我不能复现你的问题,我的listings
版本是v1.10c
。
\documentclass{ctexart}
\usepackage{zhlipsum}
\usepackage{listings}
\usepackage[svgnames]{xcolor}
\lstset{
basicstyle=\ttfamily,
breaklines=true,
keywordstyle=\bfseries\color{NavyBlue},
keywords={as, and, assert, break, class, continue, def, del, elif, else, except, exec, finally, for, from, global, if, import, in, is, lambda, not, or, pass, print, raise, return, try, while, with, yield},
emph={},
emphstyle=\bfseries\color{Rhodamine},
commentstyle=\itshape\color{black!50!white},
stringstyle=\bfseries\color{PineGreen!90!black},
columns=flexible,
numbers=left,
numbersep=1em,
numberstyle=\footnotesize,
frame=single,
framesep=0em,
}
\begin{document}
\zhlipsum[1]
\begin{lstlisting}[language=Python]
import matplotlib.pyplot as plt # 绘制图形的库
from matplotlib_venn import venn2 # 绘制二元韦恩图的库,如果是三元则是 venn3
plt.figure(figsize=(8, 8)) # 初始化设置图形的尺寸
\end{lstlisting}
\zhlipsum[2]
\end{document}
请提供你的完整MWE,从\documentclass
开始到\end{document}
结束。
从评论区中下载book.tex
删除无关部分之后,新的MWE(也就是你所说的“另一个样子”的\lstset
)如下:
\documentclass[a4paper]{book}
\usepackage[utf8]{inputenc}
\usepackage{geometry}
\usepackage{tikz}
\usepackage[dvipsnames]{xcolor}
\usepackage{ctex}
\usepackage{listings}
\lstset{
basicstyle=\ttfamily, % 设置字体族
breaklines=true, % 自动换行
keywordstyle=\bfseries\color{NavyBlue}, % 设置关键字为粗体,颜色为 NavyBlue
emph=[1]{}, % 指定强调词,如果有多个,用逗号隔开
emph=[2]{as},
emphstyle=[1]\bfseries\color{Rhodamine}, % 强调词样式设置
emphstyle=[2]\bfseries\color{NavyBlue},
commentstyle=\itshape\color{black!50!white}, % 设置注释样式,斜体,浅灰色
stringstyle=\bfseries\color{PineGreen!90!black}, % 设置字符串样式
columns=flexible,
numbers=left, % 显示行号在左边
numbersep=1em, % 设置行号的具体位置
numberstyle=\footnotesize, % 缩小行号
frame=single, % 边框
framesep=0em % 设置代码与边框的距离
}
\begin{document}
\begin{lstlisting}[language=Python]
import matplotlib.pyplot as plt # 绘制图形的库
from matplotlib_venn import venn2 # 绘制二元韦恩图的库,如果是三元则是 venn3
plt.figure(figsize=(8, 8)) # 初始化设置图形的尺寸
\end{lstlisting}
\end{document}
在我的电脑上(windows11 TeXLive2024)也正常:
as
不变色的最小工作示例,而不是把大段的(几百行的代码)发上来,没人会看。主要版本差异目前定位于xcolor
与listings
宏包上
Bug 复现使用TL2024
3月版本frozen version的v1.10
版本的listings.sty
:
BTW,恭喜你发现了华点.
另外,提供MWE总是能帮助自己和他人方便定位错误的....
{{book.zip(uploading...)}}
这个是我的整个文件,我也不清楚到底应该是什么地方有问题就全传上来了
book.tex
上面那个没传成功,就只传这个算了
@u98903 现在我这个文件listing的配置已经临时改成另一个样子了
@u98903 请始终将一个问题与一个最小工作示例绑定。如果你的两份代码均有问题,应该提两个问题。另外你可以使用“补充问题”功能。
@u98903 如果不知道,你总可以通过“二分”的方式尽可能删减代码,找到真正影响的部分。
@u98903 那么还想问,你的
TeXLive
版本是?同时我上面回答的代码在你的电脑上运行结果是否与我相同?test.tex
test.pdf
这个是我只保留了那几个有问题部分以后出来的结果。我的操作系统是Win11,TexLive 版本是2024,编辑器是vscode,编译命令是XeLatex
@u98903 amazing!我使用

xelatex test.tex
编译test.tex
的结果是正常的:请你使用
\listfiles
的方法提供这份test.tex
依赖的所有包的版本信息(在.log中会有)参考这个链接中第二个回答的内容: https://ask.latexstudio.net/ask/question/17463.html
我的宏包版本结果如下(可用于对比):
@u70550
我的是这样子
@u98903 问题可以被复现(见原始回答补充的图片信息),我将
TeXLive2024
3月版本自带的listings
的v1.10
版本的.sty
等文件放置在当前目录下,确实会出现as
无法变蓝的问题。因此最直接的方法是,使用tlmgr update listings
命令更新宏包版本从v1.10
到v1.10c
即可修复。至于具体的问题根源,由于listings
似乎没有github仓库,需要再翻翻有无有关report。