如何在 LaTeX Listings \lstinputlistings 命令中突出显示 Python 语法

如何在 LaTeX Listings \lstinputlistings 命令中突出显示 Python 语法

我正在使用包列表将我的 Python 源代码导入我的 LaTeX 文档。我使用命令\lstinputlistings。我有一个 Python 源代码,例如

class Child(Parent):
    def __init__(self, *args, **kwargs):
        bla bla bla...

我应该在命令中写些什么\lstset来突出显示单词MyClass__init__?我不想写任何我想突出显示的单词。我尝试moredelims=[s][\color{teal}]{class}{(}在 lstset 中使用,但没有用。

答案1

我会考虑通过 pygments 运行你的代码来生成 latex,可能使用 minted 包。你可以在这里获得一些详细信息https://stackoverflow.com/questions/1966425/source-code-highlighting-in-latex#1985330

答案2

好的方法是为编程语言定义新的环境。最低限度的设置可以围绕以下内容:

\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}

% Default fixed font does not support bold face
\DeclareFixedFont{\ttb}{T1}{txtt}{bx}{n}{12} % for bold
\DeclareFixedFont{\ttm}{T1}{txtt}{m}{n}{12}  % for normal

% Custom colors
\usepackage{color}
\definecolor{deepblue}{rgb}{0,0,0.5}
\definecolor{deepred}{rgb}{0.6,0,0}
\definecolor{deepgreen}{rgb}{0,0.5,0}

\usepackage{listings}

% Python style for highlighting
\newcommand\pythonstyle{\lstset{
language=Python,
basicstyle=\ttm,
morekeywords={self},              % Add keywords here
keywordstyle=\ttb\color{deepblue},
emph={MyClass,__init__},          % Custom highlighting
emphstyle=\ttb\color{deepred},    % Custom highlighting style
stringstyle=\color{deepgreen},
frame=tb,                         % Any extra options here
showstringspaces=false
}}


% Python environment
\lstnewenvironment{python}[1][]
{
\pythonstyle
\lstset{#1}
}
{}

% Python for external files
\newcommand\pythonexternal[2][]{{
\pythonstyle
\lstinputlisting[#1]{#2}}}

% Python for inline
\newcommand\pythoninline[1]{{\pythonstyle\lstinline!#1!}}

\begin{document}

\section{``In-text'' listing highlighting}

\begin{python}
class MyClass(Yourclass):
    def __init__(self, my, yours):
        bla = '5 1 2 3 4'
        print bla
\end{python}

\section{External listing highlighting}

\pythonexternal{demo.py}

\section{Inline highlighting}

Definition \pythoninline{class MyClass} means \dots

\end{document}

输出:

在此处输入图片描述

答案3

我找到了这个python包pythonhighlight在 Github 上

像这样定义它\usepackage{pythonhighlight}并像这样使用它:

\begin{python}
def f(x):
    return x
\end{python}

答案4

不久前,我修改了listings包中现有的 python 语言定义:

列表:识字语法

你可能会发现一些有用的东西。如果我没记错的话,你可以把所有这些都放在一个外部*.sty文件中。另请参阅后续问题

另一个问题

相关内容