私は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
リストのドキュメントを詳しく調べたところ、間違ったオプションを使用していることが判明しました。そこには、(ソース):
[...]
otherkeywords={〈キーワード〉}
他の文字を含む、または数字で始まるキーワードを定義します。指定された各「キーワード」はキーワード スタイルで印刷されますが、文字の「文字」、「数字」、および「その他」のステータスは変更されません。このキーは、=>、->、-->、--、:: などのキーワードを定義するように設計されています。1 つのキーワードが別のキーワードのサブシーケンスである場合 (-- および --> など)、短い方を最初に指定する必要があります。
[...]
適切なオプションは でした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}
改めて感謝します!