hsrm_theme/style/minted.sty
2016-02-15 16:45:07 +00:00

994 lines
37 KiB
TeX

%%
%% This is file `minted.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% minted.dtx (with options: `package')
%% Copyright 2013--2014 Geoffrey M. Poore
%% Copyright 2010--2011 Konrad Rudolph
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
%%
%% Additionally, the project may be distributed under the terms of the new BSD
%% license.
%%
%% This work has the LPPL maintenance status `maintained'.
%%
%% The Current Maintainer of this work is Geoffrey Poore.
%%
%% This work consists of the files minted.dtx and minted.ins
%% and the derived file minted.sty.
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{minted}[2013/12/21 v2.0-alpha3 ]
\RequirePackage{keyval}
\RequirePackage{kvoptions}
\RequirePackage{fancyvrb}
\RequirePackage{float}
\RequirePackage{ifthen}
\RequirePackage{calc}
\RequirePackage{ifplatform}
\RequirePackage{pdftexcmds}
\RequirePackage{etoolbox}
\RequirePackage{xstring}
\RequirePackage{lineno}
\AtBeginDocument{\@ifpackageloaded{color}{}{\RequirePackage{xcolor}}}
\DeclareVoidOption{chapter}{\def\minted@float@within{chapter}}
\DeclareVoidOption{section}{\def\minted@float@within{section}}
\newboolean{minted@cache}
\DeclareVoidOption{cache}{%
\minted@cachetrue
\AtEndOfPackage{\ProvideDirectory{\minted@outputdir\minted@cachedir}}%
}
\StrSubstitute{\jobname}{ }{_}[\minted@jobname]
\StrSubstitute{\minted@jobname}{"}{}[\minted@jobname]
\StrSubstitute{\minted@jobname}{*}{-}[\minted@jobname]
\newcommand{\minted@cachedir}{.minted-\minted@jobname}
\let\minted@cachedir@windows\minted@cachedir
\define@key{minted}{cachedir}{%
\@namedef{minted@cachedir}{#1}%
\StrSubstitute{\minted@cachedir}{/}{\@backslashchar}[\minted@cachedir@windows]}
\let\minted@outputdir\@empty
\let\minted@outputdir@windows\@empty
\define@key{minted}{outputdir}{%
\@namedef{minted@outputdir}{#1/}%
\StrSubstitute{\minted@outputdir}{/}%
{\@backslashchar}[\minted@outputdir@windows]}
\newboolean{minted@langlinenos}
\DeclareVoidOption{langlinenos}{\minted@langlinenostrue}
\DeclareBoolOption{draft}
\ProcessKeyvalOptions*
\newcommand{\minted@infile}{\jobname.out.pyg}
\newcommand{\minted@cachefiles}{}
\newcommand{\minted@addcachefile}[1]{%
\expandafter\gdef\expandafter\minted@cachefiles\expandafter{%
\minted@cachefiles,#1}%
\expandafter\gdef\csname minted@current@#1\endcsname{}%
}
\newcommand{\minted@savecachefiles}{%
\immediate\write\@mainaux{%
\string\gdef\string\minted@oldcachefiles\string{%
\minted@cachefiles\string}}%
}
\newcommand{\minted@cleancache}{%
\ifthenelse{\boolean{minted@cache}}{%
\ifcsname minted@oldcachefiles\endcsname
\def\do##1{%
\ifthenelse{\equal{##1}{}}{}{%
\ifcsname minted@current@##1\endcsname\else
\DeleteFile[\minted@outputdir\minted@cachedir]{##1}%
\fi
}%
}%
\expandafter\docsvlist\expandafter{\minted@oldcachefiles}%
\else
\fi
}{}%
}
\ifthenelse{\boolean{minted@cache}}%
{\AtEndDocument{%
\ifthenelse{\boolean{minted@draft}}%
{\ifcsname minted@oldcachefiles\endcsname
\let\minted@cachefiles\minted@oldcachefiles
\minted@savecachefiles
\fi}%
{\minted@savecachefiles
\minted@cleancache}}%
}%
{}%
\ifwindows
\providecommand{\DeleteFile}[2][]{%
\ifthenelse{\equal{#1}{}}%
{\IfFileExists{#2}{\immediate\write18{del "#2"}}{}}%
{\IfFileExists{#1/#2}{%
\StrSubstitute{#1}{/}{\@backslashchar}[\minted@windir]
\immediate\write18{del "\minted@windir\@backslashchar #2"}}{}}}
\else
\providecommand{\DeleteFile}[2][]{%
\ifthenelse{\equal{#1}{}}%
{\IfFileExists{#2}{\immediate\write18{rm "#2"}}{}}%
{\IfFileExists{#1/#2}{\immediate\write18{rm "#1/#2"}}{}}}
\fi
\ifwindows
\newcommand{\ProvideDirectory}[1]{%
\StrSubstitute{#1}{/}{\@backslashchar}[\minted@windir]
\immediate\write18{if not exist "\minted@windir" mkdir "\minted@windir"}}
\else
\newcommand{\ProvideDirectory}[1]{%
\immediate\write18{mkdir -p "#1"}}
\fi
\newboolean{AppExists}
\newread\minted@appexistsfile
\newcommand{\TestAppExists}[1]{
\ifwindows
\DeleteFile{\jobname.aex}
\immediate\write18{for \string^\@percentchar i in (#1.exe #1.bat #1.cmd)
do set >\jobname.aex <nul: /p
x=\string^\@percentchar \string~$PATH:i>>\jobname.aex}
%$ <- balance syntax highlighting
\immediate\openin\minted@appexistsfile\jobname.aex
\expandafter\def\expandafter\@tmp@cr\expandafter{\the\endlinechar}
\endlinechar=-1\relax
\readline\minted@appexistsfile to \minted@apppathifexists
\endlinechar=\@tmp@cr
\ifthenelse{\equal{\minted@apppathifexists}{}}
{\AppExistsfalse}
{\AppExiststrue}
\immediate\closein\minted@appexistsfile
\DeleteFile{\jobname.aex}
\immediate\typeout{file deleted}
\else
\immediate\write18{which #1 && touch \jobname.aex}
\IfFileExists{\jobname.aex}
{\AppExiststrue
\DeleteFile{\jobname.aex}}
{\AppExistsfalse}
\fi
}
\newcommand{\minted@optg}{}
\let\minted@lang\@empty
\newcommand{\minted@optlang}{}
\newcommand{\minted@optcmd}{}
\newcommand{\minted@checklang}{%
\ifcsname minted@optlang\minted@lang\endcsname\else
\expandafter\def\csname minted@optlang\minted@lang\endcsname{}%
\fi
\ifcsname minted@optlang\minted@lang @extra\endcsname\else
\expandafter\def\csname minted@optlang\minted@lang @extra\endcsname{}%
\fi
}
\newcommand{\minted@resetoptcmd}{%
\@namedef{minted@optcmd@extra}{}%
\let\minted@optcmd@autogobble\relax}
\newcommand{\minted@getoptg}[1]{%
\expandafter\detokenize%
\expandafter\expandafter\expandafter{\csname minted@optg@#1\endcsname}}
\newcommand{\minted@getoptlang}[1]{%
\expandafter\detokenize\expandafter\expandafter\expandafter{%
\csname minted@optlang\minted@lang @#1\endcsname}}
\newcommand{\minted@getoptcmd}[1]{%
\expandafter\detokenize%
\expandafter\expandafter\expandafter{\csname minted@optcmd@#1\endcsname}}
\newcommand{\minted@regoptg}[1]{%
\ifcsname minted@optg@#1@reg\endcsname\else
\expandafter\let\csname minted@optg@#1@reg\endcsname\@empty
\expandafter\def\expandafter\minted@optg\expandafter{%
\minted@optg\space\minted@getoptg{#1}}%
\fi
}
\newcommand{\minted@regoptlang}[1]{%
\ifcsname minted@optlang\minted@lang @#1@reg\endcsname\else
\ifcsname minted@optlang\minted@lang\endcsname\else
\expandafter\def\csname minted@optlang\minted@lang\endcsname{}%
\fi
\expandafter\let\csname minted@optlang\minted@lang @#1@reg\endcsname\@empty
\expandafter\let\expandafter\minted@optlang%
\csname minted@optlang\minted@lang\endcsname
\expandafter\def\expandafter\minted@optlang\expandafter{%
\minted@optlang\space\minted@getoptlang{#1}}%
\expandafter\let\csname minted@optlang\minted@lang\endcsname\minted@optlang
\let\minted@optlang\@empty
\fi
}
\newcommand{\minted@regoptcmd}[1]{%
\ifcsname minted@optcmd@#1@reg\endcsname\else
\expandafter\let\csname minted@optcmd@#1@reg\endcsname\@empty
\expandafter\def\expandafter\minted@optcmd\expandafter{%
\minted@optcmd\space\minted@getoptcmd{#1}}%
\expandafter\def\expandafter\minted@resetoptcmd\expandafter{%
\minted@resetoptcmd
\@namedef{minted@optcmd@#1}{}}%
\fi
}
\newcommand{\minted@define@opt}[4][]{%
\ifthenelse{\equal{#1}{}}%
{\define@key{minted@optg}{#2}{\@namedef{minted@optg@#2}{#3=#4}%
\@namedef{minted@optg@#2@val}{#4}%
\minted@regoptg{#2}}%
\define@key{minted@optlang}{#2}{%
\@namedef{minted@optlang\minted@lang @#2}{#3=#4}%
\@namedef{minted@optlang\minted@lang @#2@val}{#4}%
\minted@regoptlang{#2}}%
\define@key{minted@optcmd}{#2}{\@namedef{minted@optcmd@#2}{#3=#4}%
\@namedef{minted@optcmd@#2@val}{#4}%
\minted@regoptcmd{#2}}}%
{\define@key{minted@optg}{#2}[#1]{\@namedef{minted@optg@#2}{#3=#4}%
\@namedef{minted@optg@#2@val}{#4}%
\minted@regoptg{#2}}%
\define@key{minted@optlang}{#2}[#1]{%
\@namedef{minted@optlang\minted@lang @#2}{#3=#4}%
\@namedef{minted@optlang\minted@lang @#2@val}{#4}%
\minted@regoptlang{#2}}%
\define@key{minted@optcmd}{#2}[#1]{\@namedef{minted@optcmd@#2}{#3=#4}%
\@namedef{minted@optcmd@#2@val}{#4}%
\minted@regoptcmd{#2}}}%
}
\newcommand{\minted@namexdef}[1]{\expandafter\xdef\csname #1\endcsname}
\edef\minted@hashchar{\string#}
\edef\minted@lbracechar{\string{}
\edef\minted@rbracechar{\string}}
\edef\minted@dollarchar{\string$}
\edef\minted@ampchar{\string&}
\edef\minted@uscorechar{\string_}
\newcommand{\minted@bechar}{%
\begingroup
\let\#\minted@hashchar
\let\%\@percentchar
\let\{\minted@lbracechar
\let\}\minted@rbracechar
\let\$\minted@dollarchar
\let\&\minted@ampchar
\let\_\minted@uscorechar
}
\newcommand{\minted@eechar}{\endgroup}
\newcommand{\minted@define@opt@escchar}[4][]{%
\ifthenelse{\equal{#1}{}}%
{\define@key{minted@optg}{#2}{\minted@bechar%
\minted@namexdef{minted@optg@#2}{#3=#4}%
\minted@eechar%
\@namedef{minted@optg@#2@val}{#4}%
\minted@regoptg{#2}}%
\define@key{minted@optlang}{#2}{%
\minted@bechar%
\minted@namexdef{minted@optlang\minted@lang @#2}{#3=#4}%
\minted@eechar%
\@namedef{minted@optlang\minted@lang @#2@val}{#4}%
\minted@regoptlang{#2}}%
\define@key{minted@optcmd}{#2}{\minted@bechar%
\minted@namexdef{minted@optcmd@#2}{#3=#4}%
\minted@eechar%
\@namedef{minted@optcmd@#2@val}{#4}%
\minted@regoptcmd{#2}}}%
{\define@key{minted@optg}{#2}[#1]{\minted@bechar%
\minted@namexdef{minted@optg@#2}{#3=#4}%
\minted@eechar%
\@namedef{minted@optg@#2@val}{#4}%
\minted@regoptg{#2}}%
\define@key{minted@optlang}{#2}[#1]{%
\minted@bechar%
\minted@namexdef{minted@optlang\minted@lang @#2}{#3=#4}%
\minted@eechar%
\@namedef{minted@optlang\minted@lang @#2@val}{#4}%
\minted@regoptlang{#2}}%
\define@key{minted@optcmd}{#2}[#1]{\minted@bechar%
\minted@namexdef{minted@optcmd@#2}{#3=#4}%
\minted@eechar%
\@namedef{minted@optcmd@#2@val}{#4}%
\minted@regoptcmd{#2}}}%
}
\newcommand{\minted@define@optstyle}{%
\define@key{minted@optg}{style}{%
\@namedef{minted@optg@style}{-P style=##1 -P commandprefix=PYG##1}%
\minted@regoptg{style}\minted@regstyle{##1}}%
\define@key{minted@optlang}{style}{%
\@namedef{minted@optlang\minted@lang @style}%
{-P style=##1 -P commandprefix=PYG##1}%
\minted@regoptlang{style}\minted@regstyle{##1}}%
\define@key{minted@optcmd}{style}{%
\@namedef{minted@optcmd@style}{-P style=##1 -P commandprefix=PYG##1}%
\minted@regoptcmd{style}\minted@regstyle{##1}}%
}
\newcommand{\minted@patchZsq}[1]{%
\ifx\upquote@cmtt\minted@undefined\else
\ifx\encodingdefault\upquote@OTone
\ifx\ttdefault\upquote@cmtt
\expandafter\ifdefstring\expandafter{\csname PYG#1Zsq\endcsname}{\char`\'}%
{\expandafter\gdef\csname PYG#1Zsq\endcsname{\char13 }}{}%
\else
\expandafter\ifdefstring\expandafter{\csname PYG#1Zsq\endcsname}{\char`\'}%
{\expandafter\gdef\csname PYG#1Zsq\endcsname{\textquotesingle}}{}%
\fi
\else
\expandafter\ifdefstring\expandafter{\csname PYG#1Zsq\endcsname}{\char`\'}%
{\expandafter\gdef\csname PYG#1Zsq\endcsname{\textquotesingle}}{}%
\fi
\fi
}
\newcommand{\minted@regstyle}[1]{%
\ifcsname minted@stylereg@#1\endcsname\else
\expandafter\global\expandafter%
\let\csname minted@stylereg@#1\endcsname\@empty
\ifthenelse{\boolean{minted@cache}}%
{\IfFileExists{\minted@outputdir\minted@cachedir/#1.pygstyle}{}{%
\ifwindows
\immediate\write18{\MintedPygmentize\space -S #1 -f latex
-P commandprefix=PYG#1
> "\minted@outputdir@windows\minted@cachedir@windows\@backslashchar#1.pygstyle"}%
\else
\immediate\write18{\MintedPygmentize\space -S #1 -f latex
-P commandprefix=PYG#1
> "\minted@outputdir\minted@cachedir/#1.pygstyle"}%
\fi
}%
\begingroup
\let\def\gdef
\endlinechar=-1\relax
\input{\minted@outputdir\minted@cachedir/#1.pygstyle}%
\endgroup
\minted@addcachefile{#1.pygstyle}}%
{\ifwindows
\immediate\write18{\MintedPygmentize\space -S #1 -f latex
-P commandprefix=PYG#1 > "\minted@outputdir@windows\jobname.out.pyg"}%
\else
\immediate\write18{\MintedPygmentize\space -S #1 -f latex
-P commandprefix=PYG#1 > "\minted@outputdir\jobname.out.pyg"}%
\fi
\begingroup
\let\def\gdef
\endlinechar=-1\relax
\input{\minted@outputdir\jobname.out.pyg}%
\endgroup}%
\ifx\@onlypreamble\@notprerr
\minted@patchZsq{#1}%
\else
\minted@patchZsq{#1}%
\AtBeginDocument{\minted@patchZsq{#1}}%
\fi
\fi
}
\ifthenelse{\boolean{minted@draft}}{\renewcommand{\minted@regstyle}[1]{}}{}
\newcommand{\minted@define@switch}[3][]{
\define@booleankey{minted@optg}{#2}
{\@namedef{minted@optg@#2}{#3}\minted@regoptg{#2}}
{\@namedef{minted@optg@#2}{#1}\minted@regoptg{#2}}
\define@booleankey{minted@optlang}{#2}
{\@namedef{minted@optlang\minted@lang @#2}{#3}\minted@regoptlang{#2}}
{\@namedef{minted@optlang\minted@lang @#2}{#1}\minted@regoptlang{#2}}
\define@booleankey{minted@optcmd}{#2}
{\@namedef{minted@optcmd@#2}{#3}\minted@regoptcmd{#2}}
{\@namedef{minted@optcmd@#2}{#1}\minted@regoptcmd{#2}}
}
\newcommand{\minted@define@extra}[1]{
\define@key{minted@optg}{#1}{%
\expandafter\def\expandafter\minted@optg@extra\expandafter{%
\minted@optg@extra,#1=##1}}
\@namedef{minted@optg@extra}{}
\define@key{minted@optlang}{#1}{%
\ifcsname minted@optlang\minted@lang @extra\endcsname\else
\expandafter\def\csname minted@optlang\minted@lang @extra\endcsname{}%
\fi
\expandafter\let\expandafter\minted@optlang@extra%
\csname minted@optlang\minted@lang @extra \endcsname
\expandafter\def\expandafter\minted@optlang@extra\expandafter{%
\minted@optlang@extra,#1=##1}%
\expandafter\let\csname minted@optlang\minted@lang @extra\endcsname%
\minted@optlang@extra
\let\minted@optlang@extra\@empty}%
\@namedef{minted@optlang@extra}{}
\define@key{minted@optcmd}{#1}{%
\expandafter\def\expandafter\minted@optcmd@extra\expandafter{%
\minted@optcmd@extra,#1=##1}}
\@namedef{minted@optcmd@extra}{}
}
\newcommand{\minted@define@extra@switch}[1]{
\define@booleankey{minted@optg}{#1}
{\expandafter\def\expandafter\minted@optg@extra\expandafter{%
\minted@optg@extra,#1}}
{\expandafter\def\expandafter\minted@optg@extra\expandafter{%
\minted@optg@extra,#1=false}}
\define@booleankey{minted@optlang}{#1}
{%
\ifcsname minted@optlang\minted@lang @extra\endcsname\else
\expandafter\def\csname minted@optlang\minted@lang @extra\endcsname{}%
\fi
\expandafter\let\expandafter\minted@optlang@extra%
\csname minted@optlang\minted@lang @extra\endcsname
\expandafter\def\expandafter\minted@optlang@extra\expandafter{%
\minted@optlang@extra,#1}%
\expandafter\let\csname minted@optlang\minted@lang @extra\endcsname%
\minted@optlang@extra
\let\minted@optlang@extra\@empty}
{%
\ifcsname minted@optlang\minted@lang @extra\endcsname\else
\expandafter\def\csname minted@optlang\minted@lang @extra\endcsname{}%
\fi
\expandafter\let\expandafter\minted@optlang@extra%
\csname minted@optlang\minted@lang @extra\endcsname
\expandafter\def\expandafter\minted@optlang@extra\expandafter{%
\minted@optlang@extra,#1=false}%
\expandafter\let\csname minted@optlang\minted@lang @extra\endcsname%
\minted@optlang@extra
\let\minted@optlang@extra\@empty}
\define@booleankey{minted@optcmd}{#1}
{\expandafter\def\expandafter\minted@optcmd@extra\expandafter{%
\minted@optcmd@extra,#1}}
{\expandafter\def\expandafter\minted@optcmd@extra\expandafter{%
\minted@optcmd@extra,#1=false}}
}
\minted@define@opt{encoding}{-P encoding}{#1}
\minted@define@opt{outencoding}{-P outencoding}{#1}
\minted@define@opt@escchar{escapeinside}{-O escapeinside}{"#1"}
\minted@define@opt{stripnl}{-P stripnl}{#1}
\minted@define@switch{python3}{-P python3=True}
\minted@define@switch[-P funcnamehighlighting=False]%
{funcnamehighlighting}{-P funcnamehighlighting}
\minted@define@switch{startinline}{-P startinline}
\ifthenelse{\boolean{minted@draft}}%
{\minted@define@extra{gobble}}%
{\minted@define@opt{gobble}{-F gobble:n}{#1}}
\minted@define@opt{codetagify}{-F codetagify:codetags}{#1}
\minted@define@opt{keywordcase}{-F keywordcase:case}{#1}
\minted@define@switch{texcl}{-P texcomments}
\minted@define@switch{texcomments}{-P texcomments}
\minted@define@switch{mathescape}{-P mathescape}
\ifthenelse{\boolean{minted@draft}}%
{\define@booleankey{FV}{linenos}{\@nameuse{FV@Numbers@left}}{}%
\minted@define@extra@switch{linenos}}%
{\minted@define@switch{linenos}{-P linenos}}
\minted@define@optstyle
\minted@define@extra{frame}
\minted@define@extra{framesep}
\minted@define@extra{framerule}
\minted@define@extra{rulecolor}
\minted@define@extra{numbersep}
\minted@define@extra{numbers}
\minted@define@extra{firstnumber}
\minted@define@extra{stepnumber}
\minted@define@extra{firstline}
\minted@define@extra{lastline}
\minted@define@extra{baselinestretch}
\minted@define@extra{xleftmargin}
\minted@define@extra{xrightmargin}
\minted@define@extra{fillcolor}
\minted@define@extra{tabsize}
\minted@define@extra{fontfamily}
\minted@define@extra{fontsize}
\minted@define@extra{fontshape}
\minted@define@extra{fontseries}
\minted@define@extra{formatcom}
\minted@define@extra{label}
\minted@define@extra@switch{numberblanklines}
\minted@define@extra@switch{showspaces}
\minted@define@extra@switch{resetmargins}
\minted@define@extra@switch{samepage}
\minted@define@extra@switch{showtabs}
\minted@define@extra@switch{obeytabs}
\minted@define@extra@switch{breaklines}
\minted@define@extra{breakindent}
\minted@define@extra@switch{breakautoindent}
\minted@define@extra{breaksymbol}
\minted@define@extra{breaksymbolsep}
\minted@define@extra{breaksymbolindent}
\let\minted@optcmd@bgcolor\@empty
\define@key{minted@optcmd}{bgcolor}{\@namedef{minted@optcmd@bgcolor}{#1}}
\newcommand{\minted@encoding}{%
\ifcsname minted@optcmd@encoding@val\endcsname
\csname minted@optcmd@encoding@val\endcsname
\else
\ifcsname minted@optlang\minted@lang @encoding@val\endcsname
\csname minted@optlang\minted@lang @encoding@val\endcsname
\else
\ifcsname minted@optg@encoding@val\endcsname
\csname minted@optg@encoding@val\endcsname
\else
UTF8%
\fi
\fi
\fi
}
\define@booleankey{minted@optg}{autogobble}
{\expandafter\let\csname minted@optg@autogobble\endcsname\@empty}
{\expandafter\let\csname minted@optg@autogobble\endcsname\relax}
\define@booleankey{minted@optlang}{autogobble}
{\expandafter\let\csname minted@optlang\minted@lang @autogobble\endcsname\@empty}
{\expandafter\let\csname minted@optlang\minted@lang @autogobble\endcsname\relax}
\define@booleankey{minted@optcmd}{autogobble}
{\expandafter\let\csname minted@optcmd@autogobble\endcsname\@empty}
{\expandafter\let\csname minted@optcmd@autogobble\endcsname\relax}
\newboolean{minted@autogobble}
\newcommand{\minted@set@autogobble}{%
\ifcsname minted@optg@autogobble\endcsname\else
\expandafter\let\csname minted@optg@autogobble\endcsname\relax
\fi
\ifcsname minted@optlang\minted@lang @autogobble\endcsname\else
\expandafter\let\csname minted@optlang\minted@lang @autogobble\endcsname\relax
\fi
\ifcsname minted@optcmd@autogobble\endcsname\else
\expandafter\let\csname minted@optcmd@autogobble\endcsname\relax
\fi
\expandafter\ifx\csname minted@optcmd@autogobble\endcsname\@empty
\setboolean{minted@autogobble}{true}%
\else
\expandafter\ifx\csname minted@optlang\minted@lang @autogobble\endcsname\@empty
\setboolean{minted@autogobble}{true}%
\else
\expandafter\ifx\csname minted@optg@autogobble\endcsname\@empty
\setboolean{minted@autogobble}{true}%
\else
\setboolean{minted@autogobble}{false}%
\fi
\fi
\fi
}
\let\FV@ListProcessLine@Orig\FV@ListProcessLine
\define@booleankey{FV}{breaklines}%
{\let\FV@ListProcessLine\FV@ListProcessLine@Break}%
{\let\FV@ListProcessLine\FV@ListProcessLine@Orig}
\newdimen\FV@BreakIndent
\define@key{FV}{breakindent}{\FV@BreakIndent=#1}
\fvset{breakindent=0pt}
\newboolean{FV@BreakAutoIndent}
\define@booleankey{FV}{breakautoindent}%
{\FV@BreakAutoIndenttrue}{\FV@BreakAutoIndentfalse}
\fvset{breakautoindent=true}
\define@key{FV}{breaksymbol}{\def\FancyVerbBreakSymbol{#1}}
\fvset{breaksymbol=\ensuremath{\hookrightarrow}}
\newdimen\FV@BreakSymbolSep
\define@key{FV}{breaksymbolsep}{\FV@BreakSymbolSep=#1}
\fvset{breaksymbolsep=10pt}
\newdimen\FV@BreakSymbolIndent
\settowidth{\FV@BreakSymbolIndent}{\ttfamily xxxx}
\define@key{FV}{breaksymbolindent}{\FV@BreakSymbolIndent=#1}
\newsavebox{\FV@LineBox}
\newsavebox{\FV@IndentBox}
\newsavebox{\FV@LinenoBox}
\let\FV@LineIndentChars\@empty
\def\FV@GetNextChar{\let\FV@NextChar=}
\def\FV@CleanRemainingChars#1\FV@Undefined{}
\def\FV@GetLineIndent{\afterassignment\FV@CheckChar\FV@GetNextChar}
\def\FV@CheckChar{%
\ifx\FV@NextChar\FV@Undefined
\let\FV@Next=\relax
\else
\expandafter\ifx\FV@NextChar\FV@Space
\g@addto@macro{\FV@LineIndentChars}{\FV@Space}%
\let\FV@Next=\FV@GetLineIndent
\else
\expandafter\ifx\FV@NextChar\FV@Tab
\g@addto@macro{\FV@LineIndentChars}{\FV@Tab}%
\let\FV@Next=\FV@GetLineIndent
\else
\let\FV@Next=\FV@CleanRemainingChars
\fi
\fi
\fi
\FV@Next
}
\newcommand{\FancyVerbFormatBreakSymbol}{%
\ifnum\value{linenumber}=1\relax\else\FancyVerbBreakSymbol\fi}%
\AtBeginEnvironment{Verbatim}{\lineskip=0pt\xdef\FV@theprevdepth{0pt}}
\def\FV@ListProcessLine@Break#1{%
\hbox to \hsize{%
\kern\leftmargin
\hbox to \linewidth{%
\sbox{\FV@LineBox}{\FancyVerbFormatLine{#1}}%
\ifdim\wd\FV@LineBox>\linewidth
\let\FV@theprevdepth@temp\FV@theprevdepth
\savebox{\FV@LineBox}{%
\begingroup
\vbox{\hsize=\linewidth
\raggedright
\prevdepth\FV@theprevdepth
\leftlinenumbers*
\setcounter{linenumber}{1}%
\let\thelinenumber\FancyVerbFormatBreakSymbol
\begin{internallinenumbers}%
\linenumbersep=\FV@BreakSymbolSep
\advance\hsize by -\FV@BreakIndent
\advance\linewidth by -\FV@BreakIndent
\noindent\hspace*{-\FV@BreakIndent}%
\ifdefempty{\FancyVerbBreakSymbol}{}{%
\advance\hsize by -\FV@BreakSymbolIndent
\advance\linewidth by -\FV@BreakSymbolIndent
\hspace*{-\FV@BreakSymbolIndent}}%
\ifthenelse{\boolean{FV@BreakAutoIndent}}%
{\let\FV@LineIndentChars\@empty
\FV@GetLineIndent#1\FV@Undefined
\savebox{\FV@IndentBox}{\FV@LineIndentChars}%
\advance\hsize by -\wd\FV@IndentBox
\advance\linewidth by -\wd\FV@IndentBox
\hspace*{-\wd\FV@IndentBox}%
}{}%
\FancyVerbFormatLine{#1}%
\end{internallinenumbers}%
\par\xdef\FV@theprevdepth{\the\prevdepth}}%
\endgroup
}%
\savebox{\FV@LinenoBox}{\FV@LeftListNumber}%
\vbox to\ht\FV@LineBox{%
\prevdepth\FV@theprevdepth@temp\FV@LeftListNumber\vfill}%
\FV@LeftListFrame
\null\hfill\usebox{\FV@LineBox}\hss
\FV@RightListFrame
\vbox to\ht\FV@LineBox{%
\prevdepth\FV@theprevdepth@temp\FV@RightListNumber\vfill}%
\else
\FV@LeftListNumber
\FV@LeftListFrame
\vbox{\hsize=\linewidth
\prevdepth\FV@theprevdepth
\noindent\FancyVerbFormatLine{#1}%
\par\xdef\FV@theprevdepth{\the\prevdepth}}\hss
\FV@RightListFrame
\FV@RightListNumber
\fi}%
\hss}}
\newsavebox{\minted@bgbox}
\newenvironment{minted@colorbg}[1]{
%\setlength{\fboxsep}{-\fboxrule}
\def\minted@bgcol{#1}
\noindent
\begin{lrbox}{\minted@bgbox}
\begin{minipage}{\linewidth-2\fboxsep}}
{\end{minipage}
\end{lrbox}%
\colorbox{\minted@bgcol}{\usebox{\minted@bgbox}}}
\newwrite\minted@code
\newcommand{\minted@savecode}[1]{
\immediate\openout\minted@code\jobname.pyg\relax
\immediate\write\minted@code{\expandafter\detokenize\expandafter{#1}}%
\immediate\closeout\minted@code}
\newcommand{\minted@write@detok}[1]{%
\immediate\write\FV@OutFile{\detokenize{#1}}}
\newcommand{\minted@FVB@VerbatimOut}[1]{%
\@bsphack
\begingroup
\FV@UseKeyValues
\FV@DefineWhiteSpace
\def\FV@Space{\space}%
\FV@DefineTabOut
\let\FV@ProcessLine\minted@write@detok
\immediate\openout\FV@OutFile #1\relax
\let\FV@FontScanPrep\relax
\let\@noligs\relax
\FV@Scan}
\newcommand{\MintedPygmentize}{pygmentize}
\newcommand{\minted@pygmentize}[2][\jobname.pyg]{%
\minted@checklang
\minted@set@autogobble
\ifthenelse{\boolean{minted@autogobble}}%
{\def\minted@codefile{\jobname.pyg}}%
{\def\minted@codefile{#1}}%
\def\minted@cmd{\MintedPygmentize\space -l #2
-f latex -F tokenmerge
\minted@optg \space \csname minted@optlang\minted@lang\endcsname
\space \minted@optcmd \space -P "verboptions=\minted@getoptg{extra}%
\minted@getoptlang{extra}\minted@getoptcmd{extra}"
-o "\minted@outputdir\minted@infile" \space
"\minted@outputdir\minted@codefile"}%
% For debugging, uncomment: %%%%
% \immediate\typeout{\minted@cmd}%
% %%%%
\ifthenelse{\boolean{minted@cache}}%
{%
\ifx\XeTeXinterchartoks\minted@undefined
\ifthenelse{\boolean{minted@autogobble}}%
{\edef\minted@hash{\pdf@filemdfivesum{#1}%
\pdf@mdfivesum{\minted@cmd autogobble}}}%
{\edef\minted@hash{\pdf@filemdfivesum{#1}%
\pdf@mdfivesum{\minted@cmd}}}%
\else
\immediate\openout\minted@code\jobname.mintedcmd\relax
\immediate\write\minted@code{\minted@cmd}%
\ifthenelse{\boolean{minted@autogobble}}%
{\immediate\write\minted@code{autogobble}}{}%
\immediate\closeout\minted@code
%Cheating a little here by using ASCII codes to write `{` and `}`
%in the Python code
\def\minted@hashcmd{%
\detokenize{python -c "import hashlib;
hasher = hashlib.sha1();
f = open(\"}\minted@outputdir\jobname.mintedcmd\detokenize{\", \"rb\");
hasher.update(f.read());
f.close();
f = open(\"}\minted@outputdir#1\detokenize{\", \"rb\");
hasher.update(f.read());
f.close();
f = open(\"}\minted@outputdir\jobname.mintedmd5\detokenize{\", \"w\");
macro = \"\\edef\\minted@hash\" + chr(123) + hasher.hexdigest() + chr(125) + \"\";
f.write(\"\\makeatletter\" + macro + \"\\makeatother\\endinput\n\");
f.close();"}}%
\immediate\write18{\minted@hashcmd}%
\input{\minted@outputdir\jobname.mintedmd5}%
\fi
\ifwindows
\edef\minted@infile{%
\minted@cachedir@windows\@backslashchar\minted@hash.pygtex}%
\else
\edef\minted@infile{%
\minted@cachedir/\minted@hash.pygtex}%
\fi
\IfFileExists{\minted@cachedir/\minted@hash.pygtex}{}{%
\ifthenelse{\boolean{minted@autogobble}}{%
%Need a version of open() that supports encoding under Python 2
\edef\minted@autogobblecmd{%
\detokenize{python -c "import sys;
import textwrap;
from io import open;
f = open(\"}\minted@outputdir#1\detokenize{\", \"r\", encoding=\"}\minted@encoding\detokenize{\");
t = f.read();
f.close();
f = open(\"}\minted@outputdir\jobname.pyg\detokenize{\", \"w\", encoding=\"}\minted@encoding\detokenize{\");
f.write(textwrap.dedent(t));
f.close();"}%
}%
\immediate\write18{\minted@autogobblecmd}}{}%
\immediate\write18{\minted@cmd}}%
\expandafter\minted@addcachefile\expandafter{\minted@hash.pygtex}%
\minted@inputpyg}%
{%
\ifthenelse{\boolean{minted@autogobble}}{%
%Need a version of open() that supports encoding under Python 2
\edef\minted@autogobblecmd{%
\detokenize{python -c "import sys;
import textwrap;
from io import open;
f = open(\"}\minted@outputdir#1\detokenize{\", \"r\", encoding=\"}\minted@encoding\detokenize{\");
t = f.read();
f.close();
f = open(\"}\minted@outputdir\jobname.pyg\detokenize{\", \"w\", encoding=\"}\minted@encoding\detokenize{\");
f.write(textwrap.dedent(t));
f.close();"}%
}%
\immediate\write18{\minted@autogobblecmd}}{}%
\immediate\write18{\minted@cmd}%
\minted@inputpyg}%
}
\newcommand{\minted@inputpyg}{%
\ifthenelse{\equal{\minted@optcmd@bgcolor}{}}%
{}%
{\begin{minted@colorbg}{\minted@optcmd@bgcolor}}%
\input{\minted@outputdir\minted@infile}%
\ifthenelse{\equal{\minted@optcmd@bgcolor}{}}%
{}%
{\end{minted@colorbg}}%
}
\newcounter{minted@FancyVerbLineTemp}
\newcommand{\minted@langlinenoson}{%
\ifcsname c@minted@lang\minted@lang\endcsname\else
\newcounter{minted@lang\minted@lang}%
\fi
\setcounter{minted@FancyVerbLineTemp}{\value{FancyVerbLine}}%
\setcounter{FancyVerbLine}{\value{minted@lang\minted@lang}}%
}
\newcommand{\minted@langlinenosoff}{%
\setcounter{minted@lang\minted@lang}{\value{FancyVerbLine}}%
\setcounter{FancyVerbLine}{\value{minted@FancyVerbLineTemp}}%
}
\ifthenelse{\boolean{minted@langlinenos}}{}{%
\let\minted@langlinenoson\relax
\let\minted@langlinenosoff\relax
}
\newcommand{\setminted}[2][]{%
\ifthenelse{\equal{#1}{}}%
{\setkeys{minted@optg}{#2}}%
{\def\minted@lang{#1}\setkeys{minted@optlang}{#2}}%
}
\newcommand{\usemintedstyle}[2][]{\setminted[#1]{style=#2}}
\newrobustcmd{\mintinline}[2][]{%
\minted@resetoptcmd
\setkeys{minted@optcmd}{#1}%
\def\minted@lang{#2}%
\begingroup
\let\do\@makeother\dospecials
\catcode`\{=1
\catcode`\}=2
\catcode`\^^I=\active
\@ifnextchar\bgroup
{\minted@inline@iii}%
{\catcode`\{=12\catcode`\}=12
\minted@inline@i}}
\def\minted@inline@i#1{%
\endgroup
\def\minted@inline@ii##1#1{%
\minted@inline@iii{##1}}%
\begingroup
\let\do\@makeother\dospecials
\minted@inline@ii}
\ifthenelse{\boolean{minted@draft}}%
{\newcommand{\minted@inline@iii}[1]{%
\endgroup
\def\minted@argretok{%
\begingroup
\everyeof{\noexpand}%
\endlinechar-1\relax
\let\do\@makeother\dospecials
\catcode`\ =\active
\catcode`\^^I=\active
\scantokens{#1}%
\endgroup}%
\begingroup
\expandafter\fvset\expandafter{\minted@optg@extra}%
\minted@checklang
\expandafter\let\expandafter\minted@optlang@extra\csname minted@optlang\minted@lang @extra\endcsname
\expandafter\fvset\expandafter{\minted@optlang@extra}%
\expandafter\fvset\expandafter{\minted@optcmd@extra}%
\FV@BeginVBox
\frenchspacing
\FV@SetupFont
\FV@DefineWhiteSpace
\FancyVerbDefineActive
\FancyVerbFormatCom
\FV@ObeyTabsInit
\hbox{\FancyVerbFormatLine{\minted@argretok}}%
\FV@EndVBox
\endgroup}}%
{\newcommand{\minted@inline@iii}[1]{%
\endgroup
\immediate\openout\minted@code\jobname.pyg\relax
\immediate\write\minted@code{\detokenize{#1}}%
\immediate\closeout\minted@code
\begingroup
\RecustomVerbatimEnvironment{Verbatim}{BVerbatim}{}%
\minted@pygmentize{\minted@lang}%
\endgroup}}
\ifthenelse{\boolean{minted@draft}}%
{\newcommand{\mint}[3][]{%
\def\minted@lang{#2}%
\DefineShortVerb{#3}%
\minted@resetoptcmd
\setkeys{minted@optcmd}{#1}%
\minted@langlinenoson
\begingroup
\expandafter\fvset\expandafter{\minted@optg@extra}%
\minted@checklang
\expandafter\let\expandafter\minted@optlang@extra\csname minted@optlang\minted@lang @extra\endcsname
\expandafter\fvset\expandafter{\minted@optlang@extra}%
\expandafter\fvset\expandafter{\minted@optcmd@extra}%
\SaveVerb[aftersave={%
\UndefineShortVerb{#3}%
\let\FV@Line\FV@SV@minted@verb
\FV@VerbatimBegin\FV@PreProcessLine\FV@VerbatimEnd
\endgroup
\UndefineShortVerb{#3}%
\minted@langlinenosoff
\@doendpe\global\@ignorefalse\ignorespaces}]{minted@verb}#3}}%
{\newcommand{\mint}[3][]{%
\def\minted@lang{#2}%
\DefineShortVerb{#3}%
\minted@resetoptcmd
\setkeys{minted@optcmd}{#1}%
\SaveVerb[aftersave={%
\UndefineShortVerb{#3}%
\minted@langlinenoson
\minted@savecode{\FV@SV@minted@verb}%
\minted@pygmentize{#2}%
\minted@langlinenosoff}]{minted@verb}#3}}
\ifthenelse{\boolean{minted@draft}}%
{\newenvironment{minted}[2][]
{\VerbatimEnvironment
\let\FVB@VerbatimOut\minted@FVB@VerbatimOut
\def\minted@lang{#2}%
\minted@resetoptcmd
\setkeys{minted@optcmd}{#1}%
\expandafter\fvset\expandafter{\minted@optg@extra}%
\minted@checklang
\expandafter\let\expandafter\minted@optlang@extra\csname minted@optlang\minted@lang @extra\endcsname
\expandafter\fvset\expandafter{\minted@optlang@extra}%
\expandafter\fvset\expandafter{\minted@optcmd@extra}%
\minted@langlinenoson
\begin{Verbatim}}%
{\end{Verbatim}%
\minted@langlinenosoff}}%
{\newenvironment{minted}[2][]
{\VerbatimEnvironment
\let\FVB@VerbatimOut\minted@FVB@VerbatimOut
\def\minted@lang{#2}%
\minted@resetoptcmd
\setkeys{minted@optcmd}{#1}%
\begin{VerbatimOut}[codes={\catcode`\^^I=12}]{\jobname.pyg}}%
{\end{VerbatimOut}%
\minted@langlinenoson
\minted@pygmentize{\minted@lang}%
\minted@langlinenosoff}}
\ifthenelse{\boolean{minted@draft}}%
{\newcommand{\inputminted}[3][]{%
\def\minted@lang{#2}%
\minted@resetoptcmd
\setkeys{minted@optcmd}{#1}%
\begingroup
\expandafter\fvset\expandafter{\minted@optg@extra}%
\minted@checklang
\expandafter\let\expandafter\minted@optlang@extra\csname minted@optlang\minted@lang @extra\endcsname
\expandafter\fvset\expandafter{\minted@optlang@extra}%
\expandafter\fvset\expandafter{\minted@optcmd@extra}%
\VerbatimInput{#3}%
\endgroup}}%
{\newcommand{\inputminted}[3][]{%
\def\minted@lang{#2}%
\minted@resetoptcmd
\setkeys{minted@optcmd}{#1}%
\minted@pygmentize[#3]{#2}}}
\newcommand{\newminted}[3][]{
\ifthenelse{\equal{#1}{}}
{\def\minted@envname{#2code}}
{\def\minted@envname{#1}}
\newenvironment{\minted@envname}
{\VerbatimEnvironment
\begin{minted}[#3]{#2}}
{\end{minted}}
\newenvironment{\minted@envname *}[1]
{\VerbatimEnvironment\begin{minted}[#3,##1]{#2}}
{\end{minted}}}
\newcommand{\newmint}[3][]{
\ifthenelse{\equal{#1}{}}
{\def\minted@shortname{#2}}
{\def\minted@shortname{#1}}
\expandafter\newcommand\csname\minted@shortname\endcsname[2][]{
\mint[#3,##1]{#2}##2}}
\newcommand{\newmintedfile}[3][]{
\ifthenelse{\equal{#1}{}}
{\def\minted@shortname{#2file}}
{\def\minted@shortname{#1}}
\expandafter\newcommand\csname\minted@shortname\endcsname[2][]{
\inputminted[#3,##1]{#2}{##2}}}
\newcommand{\newmintinline}[3][]{%
\ifthenelse{\equal{#1}{}}%
{\def\minted@shortname{#2inline}}%
{\def\minted@shortname{#1}}%
\expandafter\newrobustcmd\csname\minted@shortname\endcsname{%
\begingroup
\let\do\@makeother\dospecials
\catcode`\{=1
\catcode`\}=2
\@ifnextchar[{\endgroup\minted@inliner[#3][#2]}%
{\endgroup\minted@inliner[#3][#2][]}}%
\def\minted@inliner[##1][##2][##3]{\mintinline[##1,##3]{##2}}%
}
\@ifundefined{minted@float@within}
{\newfloat{listing}{h}{lol}}
{\newfloat{listing}{h}{lol}[\minted@float@within]}
\newcommand{\listingscaption}{Listing}
\floatname{listing}{\listingscaption}
\newcommand{\listoflistingscaption}{List of listings}
\providecommand{\listoflistings}{\listof{listing}{\listoflistingscaption}}
\AtEndOfPackage{%
\ifthenelse{\boolean{minted@draft}}{}{%
\ifnum\pdf@shellescape=1\relax\else
\PackageError{minted}%
{You must invoke LaTeX with the
-shell-escape flag}%
{Pass the -shell-escape flag to LaTeX. Refer to the minted.sty
documentation for more information.}%
\fi
\TestAppExists{pygmentize}
\ifAppExists\else
\PackageError{minted}%
{You must have `pygmentize' installed
to use this package}%
{Refer to the installation instructions in the minted
documentation for more information.}%
\fi
\setminted{style=default}%
}%
}
\AtEndDocument{
\ifx\XeTeXinterchartoks\minted@undefined
\else
\DeleteFile[\minted@outputdir]{\jobname.mintedcmd}%
\DeleteFile[\minted@outputdir]{\jobname.mintedmd5}%
\fi
\DeleteFile[\minted@outputdir]{\jobname.pyg}%
\DeleteFile[\minted@outputdir]{\jobname.out.pyg}%
}
%% \Finale
\endinput
%%
%% End of file `minted.sty'.