我有一个像这样的乳胶文档,在其中我定义了自己的列表语言:
\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}
\definecolor{backcolour}{rgb}{0.95,0.95,0.92}
\definecolor{keywords1}{RGB}{193,89,45}
\definecolor{keywords2}{RGB}{55,80,146}
\definecolor{string}{RGB}{72,94,70}
\lstdefinelanguage{Python}{
backgroundcolor=\color{backcolour},
commentstyle=\color{codegreen},
keywords=[1]{class, import},
keywordstyle=[1]\color{keywords1},
keywords=[2]{print},
keywordstyle=[2]\color{keywords2},
numberstyle=\tiny\color{codegray},
stringstyle=\color{string}\ttfamily,
basicstyle=\footnotesize,
breakatwhitespace=false,
breaklines=true,
captionpos=b,
keepspaces=true,
numbers=none,
numbersep=5pt,
showspaces=false,
showstringspaces=false,
showtabs=false,
tabsize=2
}
\begin{document}
\begin{lstlisting}[language=Python]
import pandas as pd
import qnorm
df = pd.DataFrame({'C1': {'A': 5, 'B': 2, 'C': 3, 'D': 4},
'C2': {'A': 4, 'B': 1, 'C': 4, 'D': 2},
'C3': {'A': 3, 'B': 4, 'C': 6, 'D': 8}})
print(qnorm.quantile_normalize(df, axis=1))
C1 C2 C3
A 5.666667 5.166667 2.000000
B 2.000000 2.000000 3.000000
C 3.000000 5.166667 4.666667
D 4.666667 3.000000 5.666667
\end{lstlisting}
\end{document}
如何确保撇号 (') 之间的文本按我定义的字符串颜色着色?我尝试添加字符串样式,但似乎撇号无法识别为字符串。其他符号,例如“
我究竟做错了什么...?
答案1
您需要指定新定义的语言中使用的字符串字符。通过添加
string = [b]{'}
添加到您的选项列表中。从listings
文档(部分4.7 语言定义):
字符串
string=[⟨b|d|m|bd|s⟩]{⟨delimiter (character)⟩}
morestring=[⟨b|d|m|bd|s⟩]{⟨delimiter⟩}
deletestring=[⟨b|d|m|bd|s⟩]{⟨delimiter⟩}
定义、添加或删除字符串分隔符列表中的分隔符。起始和结束分隔符相同,即在源代码中分隔符必须相互匹配。
可选参数是类型,它控制分隔符本身在字符串或字符文字中的表示方式:用 ackslash 转义
b
,d
oubled(或两者通过 允许bd
)。或者,类型可以指一种不常见的分隔符形式:字符串分隔符(类似于s
注释类型)或m
atlab 样式分隔符。后者是 Ada 和 Matlab 的特殊类型,可能还有其他语言,其中字符串分隔符也用于其他目的。它等同于d
,只是字符串不是以字母、右括号、右方括号或其他字符开头。
\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}
\definecolor{backcolour}{rgb}{0.95,0.95,0.92}
\definecolor{keywords1}{RGB}{193,89,45}
\definecolor{keywords2}{RGB}{55,80,146}
\definecolor{string}{RGB}{72,94,70}
\lstdefinelanguage{Python}{
backgroundcolor=\color{backcolour},
commentstyle=\color{codegreen},
keywords=[1]{class, import},
keywordstyle=[1]\color{keywords1},
keywords=[2]{print},
keywordstyle=[2]\color{keywords2},
numberstyle=\tiny\color{codegray},
string=[b]{'},
stringstyle=\color{string}\ttfamily,
basicstyle=\footnotesize,
breakatwhitespace=false,
breaklines=true,
captionpos=b,
keepspaces=true,
numbers=none,
numbersep=5pt,
showspaces=false,
showstringspaces=true,
showtabs=false,
tabsize=2
}
\begin{document}
\begin{lstlisting}[language=Python]
import pandas as pd
import qnorm
df = pd.DataFrame({'C1': {'A': 5, 'B': 2, 'C': 3, 'D': 4},
'C2': {'A': 4, 'B': 1, 'C': 4, 'D': 2},
'C3': {'A': 3, 'B': 4, 'C': 6, 'D': 8}})
print(qnorm.quantile_normalize(df, axis=1))
C1 C2 C3
A 5.666667 5.166667 2.000000
B 2.000000 2.000000 3.000000
C 3.000000 5.166667 4.666667
D 4.666667 3.000000 5.666667
\end{lstlisting}
\end{document}