lstinputlistings 语法高亮

lstinputlistings 语法高亮

我正在使用包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}}

但我不确定这是否允许您改变颜色。

相关内容