我想在 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 找到的每種情況,甚至在某些單詞內?
答案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}
再次感謝!最好的祝愿