% Copyright 2009--2024 by Olivier Verdier % License: see the file LICENSE.rst \NeedsTeXFormat{LaTeX2e} \UseRawInputEncoding \ProvidesPackage{pythonhighlight}[2024/03/18 python code highlighting; provided by Olivier Verdier ] \RequirePackage{listings} \RequirePackage{xcolor} \RequirePackage{xparse} \renewcommand*{\lstlistlistingname}{Code Listings} \renewcommand*{\lstlistingname}{Code Listing} \definecolor{gray}{gray}{0.5} \colorlet{commentcolour}{green!50!black} \colorlet{stringcolour}{red!60!black} \colorlet{keywordcolour}{magenta!90!black} \colorlet{exceptioncolour}{yellow!50!red} \colorlet{commandcolour}{blue!60!black} \colorlet{numpycolour}{blue!60!green} \colorlet{literatecolour}{magenta!90!black} \colorlet{promptcolour}{green!50!black} \colorlet{specmethodcolour}{violet} \newcommand*{\framemargin}{3ex} \newcommand*{\literatecolour}{\textcolor{literatecolour}} \newcommand*{\pythonprompt}{\textcolor{promptcolour}{{>}{>}{>}}} \lstdefinestyle{pythonhighlight-style}{ %\lstset{ %keepspaces=true, language=python, showtabs=true, tab=, tabsize=2, basicstyle=\ttfamily\footnotesize,%\setstretch{.5}, stringstyle=\color{stringcolour}, showstringspaces=false, alsoletter={1234567890}, otherkeywords={\%, \}, \{, \&, \|}, keywordstyle=\color{keywordcolour}\bfseries, emph={and,as,async,await,break,class,continue,def,yield,del,elif ,else,% except,exec,finally,for,from,global,if,import,in,% lambda,not,or,pass,print,raise,return,try,while,assert,with}, emphstyle=\color{blue}\bfseries, emph={[2]True, False, None}, emphstyle=[2]\color{keywordcolour}, emph={[3]object,type,isinstance,copy,deepcopy,zip,enumerate,reversed,list,set,len,dict,tuple,xrange,append,execfile,real,imag,reduce,str,repr}, emphstyle=[3]\color{commandcolour}, emph={Exception,NameError,IndexError,SyntaxError,TypeError,ValueError,OverflowError,ZeroDivisionError}, emphstyle=\color{exceptioncolour}\bfseries, %upquote=true, morecomment=[s]{"""}{"""}, commentstyle=\color{commentcolour}\slshape, %emph={[4]1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, emph={[4]ode, fsolve, sqrt, exp, sin, cos,arctan, arctan2, arccos, pi, array, norm, solve, dot, arange, isscalar, max, sum, flatten, shape, reshape, find, any, all, abs, plot, linspace, legend, quad, polyval,polyfit, hstack, concatenate,vstack,column_stack,empty,zeros,ones,rand,vander,grid,pcolor,eig,eigs,eigvals,svd,qr,tan,det,logspace,roll,min,mean,cumsum,cumprod,diff,vectorize,lstsq,cla,eye,xlabel,ylabel,squeeze}, emphstyle=[4]\color{numpycolour}, emph={[5]__init__,__add__,__mul__,__div__,__sub__,__call__,__getitem__,__setitem__,__eq__,__ne__,__nonzero__,__rmul__,__radd__,__repr__,__str__,__get__,__truediv__,__pow__,__name__,__future__,__all__}, emphstyle=[5]\color{specmethodcolour}, emph={[6]assert,yield}, emphstyle=[6]\color{keywordcolour}\bfseries, emph={[7]range}, emphstyle={[7]\color{keywordcolour}\bfseries}, % emph={[7]self}, % emphstyle=[7]\bfseries, literate=*% {:}{{\literatecolour:}}{1}% {=}{{\literatecolour=}}{1}% {-}{{\literatecolour-}}{1}% {+}{{\literatecolour+}}{1}% {*}{{\literatecolour*}}{1}% {**}{{\literatecolour{**}}}2% {/}{{\literatecolour/}}{1}% {//}{{\literatecolour{//}}}2% {!}{{\literatecolour!}}{1}% %{(}{{\literatecolour(}}{1}% %{)}{{\literatecolour)}}{1}% {[}{{\literatecolour[}}{1}% {]}{{\literatecolour]}}{1}% {<}{{\literatecolour<}}{1}% {>}{{\literatecolour>}}{1}% {>>>}{\pythonprompt}{3}% ,% %aboveskip=.5ex, frame=trbl, %frameround=tttt, %framesep=.3ex, rulecolor=\color{black!40}, %framexleftmargin=\framemargin, %framextopmargin=.1ex, %framexbottommargin=.1ex, %framexrightmargin=\framemargin, %framexleftmargin=1mm, framextopmargin=1mm, frame=shadowbox, rulesepcolor=\color{blue},#1 %frame=tb, backgroundcolor=\color{white}, breakindent=.5\textwidth,frame=single,breaklines=true% %} } \newcommand*{\inputpython}[3]{\lstinputlisting[firstline=#2,lastline=#3,firstnumber=#2,frame=single,breakindent=.5\textwidth,frame=single,breaklines=true,style=pythonhighlight-style]{#1}} \NewDocumentCommand\inputpythonfile{moo}{\lstinputlisting[ firstline=\IfValueTF{#2}{#2}{0}, % firstnumber=\IfValueTF{#2}{#2}{0}, lastline=\IfValueTF{#3}{#3}{9999999}, frame=single, breakindent=.5\textwidth, frame=single, breaklines=true, style=pythonhighlight-style ]{#1}} \lstnewenvironment{python}[2][]{% \lst@TestEOLChar{#2}% \lstset{style=pythonhighlight-style}% \lstset{#1}% % has to be in an extra \lstset{} command so that labels work correctly \csname\@lst @SetFirstNumber\endcsname% }{% \let\if@nobreak\iffalse% \csname\@lst @SaveFirstNumber\endcsname% } \lstdefinestyle{pythonhighlight-inline-style}{ style=pythonhighlight-style,% basicstyle=\ttfamily,% keywordstyle=\color{keywordcolour},% emphstyle={[7]\color{keywordcolour}},% emphstyle=\color{exceptioncolour},% literate=*% {:}{{\literatecolour:}}{2}% {=}{{\literatecolour=}}{2}% {-}{{\literatecolour-}}{2}% {+}{{\literatecolour+}}{2}% {*}{{\literatecolour*}}2% {**}{{\literatecolour{**}}}3% {/}{{\literatecolour/}}{2}% {//}{{\literatecolour{//}}}{2}% {!}{{\literatecolour!}}{2}% %{(}{{\literatecolour(}}{2}% %{)}{{\literatecolour)}}{2}% {[}{{\literatecolour[}}{2}% {]}{{\literatecolour]}}{2}% {<}{{\literatecolour<}}{2}% {<=}{{\literatecolour{<=}}}3% {>}{{\literatecolour>}}{2}% {>=}{{\literatecolour{>=}}}3% {==}{{\literatecolour{==}}}3% {!=}{{\literatecolour{!=}}}3% {+=}{{\literatecolour{+=}}}3% {-=}{{\literatecolour{-=}}}3% {*=}{{\literatecolour{*=}}}3% {/=}{{\literatecolour{/=}}}3% %% emphstyle=\color{blue},% } \newcommand*{\pyth}{\lstinline[style=pythonhighlight-inline-style]}