我正在使用包listings
将我的 Python 源代码导入我的 LaTeX 文档。我使用命令\lstinputlistings
。我有一个 Python 源代码,例如
class MyClass(Yourclass):
def __init__(self, myvar, yours):
bla bla bla...
我应该在命令中写些什么\lstset
来突出显示 MyClass、init 等单词?我不想写任何我想突出显示的单词。我尝试使用moredelims=[s][\color{teal}]{class}{(}
inside,lstset
但它不起作用。
为什么morekeywords={...}
不适用于lstinputlistings
。 它适用于lstlistings
环境,但不适用于源文件的输入。
答案1
发布最小且可编译的示例,而不仅仅是代码片段。这样,回答者就不必猜测你的问题发生了什么。
我猜测您正在寻找类似的东西。
\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}
\lstset{language=Python,
morekeywords={as,__init__,MyClass},
keywordstyle=\color{teal}\bfseries,
}
\begin{document}
\lstinputlisting{guess.py}
\end{document}
在哪里guess.py
你的示例代码片段在作为在最后一行显示其morekeywords
有效。
class MyClass(Yourclass):
def __init__(self, myvar, yours):
bla bla bla... as
这是输出。
您还可以__init__
从morekeywords
选项中删除并使用如何强调列表中以 ` 开头的所有单词和列表语言定义关键字后缀。因此,你可以将下面的代码片段放入你的序言中。
\lstset{language=Python,
morekeywords={as,MyClass},
keywordstyle=\color{teal}\bfseries,
keywordsprefix=_,
}
请让我知道这是否对你有用。
答案2
为了回避你的listinputlistings
问题,你可以随时放置
\begin{lstlisting}
\input{yoursource}
\end{lstlisting}
或者执行如下命令:
\newcommand{\Source}[1]{\begin{lstlisting}\input{#1}\end{lstlisting}}
至于添加更多关键词,我前段时间想了一下,想出了
\lstset{emph={Keyword1, Keyword2, Etc}, emphstyle={\bf}}
但我不确定这是否允许您改变颜色。