我正在使用包列表将我的 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}