清單在不應該使用關鍵字的地方應用了關鍵字

清單在不應該使用關鍵字的地方應用了關鍵字

我想在 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 檔案輸出

我該怎麼辦,關鍵字樣式僅適用於整個單詞,而不是適用於 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

更深入地研究清單文件發現我使用了錯誤的選項。它說,(來源):

[...]

其他關鍵字={<關鍵字>}

定義包含其他字元或以數字開頭的關鍵字。每個給定的「關鍵字」都以關鍵字樣式列印,但不會改變字元的「字母」、「數字」和「其他」狀態。此鍵旨在定義=>、->、-->、--、:: 等關鍵字。如果一個關鍵字是另一個關鍵字的子序列(例如--and-->),則必須先指定較短的一個。

[...]

適當的選項是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}

正確結果

再次感謝!最好的祝愿

相關內容