Listings 在不该用到关键词的地方应用了关键词

Listings 在不该用到关键词的地方应用了关键词

我想在 LaTeX 文件中实现 Python 代码。下面是一个简单示例

\documentclass[12pt]{report}

\usepackage{listings}
\usepackage[dvipsnames]{xcolor}

\begin{document}
\newcommand\pythonstyle{\lstset{
language=Python,
basicstyle=\scriptsize,
backgroundcolor=\color{lightgray},
otherkeywords={self,with,as},
keywordstyle=\color{NavyBlue},
commentstyle=\color{OliveGreen},
emph={MyClass,__init__,In,Out},
emphstyle=\color{red}
showstringspaces=false,
}}

{\pythonstyle\begin{lstlisting}
# with my current listing, this is not working as inteded

import pandas as pd

data = pd.DataFrame()
\end{lstlisting}}


\end{document}

产生以下输出

Tex 文件输出

我该怎么做才能使 keywordstyle 仅适用于整个单词,而不适用于 tex 找到的每个案例,甚至适用于某些单词内部?

答案1

只是作为一种替代方案:minted很好地突出了需要的内容。

铸造示例

% arara: pdflatex: {shell: yes}
\documentclass[12pt]{report}

\usepackage{minted}
\usepackage[svgnames]{xcolor}

\usemintedstyle{vs}
\setminted{bgcolor=GhostWhite!90!gray}

\begin{document}

\begin{minted}{python}
# with my current listing, this is not working as inteded

import pandas as pd

data = pd.DataFrame()
\end{minted}


\end{document}

答案2

深入研究清单文档后,我发现我使用了错误的选项。文档中说(来源):

[...]

其他关键词={〈关键词〉}

定义包含其他字符或以数字开头的关键字。每个给定的“关键字”都以关键字样式打印,但不改变字符的“字母”、“数字”和“其他”状态。此键用于定义关键字,如=>、->、-->、--、:: 等。如果一个关键字是另一个关键字的子序列(如--和-->),则必须先指定较短的那个。

[...]

合适的选项是morekeywords。使用morekeywords而不是otherkeywords解决了我的问题!@Dr.ManuelKuehner,这对你来说应该很有趣!@TeXnician,尽管如此,还是要感谢你的替代解决方案!

\documentclass[12pt]{report}

\usepackage{listings}
\usepackage[dvipsnames]{xcolor}

\begin{document}
\newcommand\pythonstyle{\lstset{
language=Python,
basicstyle=\scriptsize,
backgroundcolor=\color{lightgray},
morekeywords={self,with,as},
keywordstyle=\color{NavyBlue},
commentstyle=\color{OliveGreen},
emph={MyClass,__init__,In,Out},
emphstyle=\color{red}
showstringspaces=false,
}}

{\pythonstyle\begin{lstlisting}
# with my current listing, this is not working as inteded

import pandas as pd

data = pd.DataFrame()
\end{lstlisting}}


\end{document}

正确结果

再次感谢!祝一切顺利

相关内容