formations/presentations/outils/git/minted.sty

1222 lines
46 KiB
Plaintext
Raw Permalink Normal View History

2020-08-05 17:08:33 +02:00
%%
%% This is file `minted.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% minted.dtx (with options: `package')
%% Copyright 2013--2015 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}
[2015/01/31 v2.0 Yet another Pygments shim for LaTeX]
\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}{}{%
\@ifpackageloaded{xcolor}{}{\RequirePackage{xcolor}}}%
}
\DeclareVoidOption{chapter}{\def\minted@float@within{chapter}}
\DeclareVoidOption{section}{\def\minted@float@within{section}}
\DeclareBoolOption{newfloat}
\DeclareBoolOption[true]{cache}
\StrSubstitute{\jobname}{ }{_}[\minted@jobname]
\StrSubstitute{\minted@jobname}{"}{}[\minted@jobname]
\StrSubstitute{\minted@jobname}{*}{-}[\minted@jobname]
\newcommand{\minted@cachedir}{\detokenize{_}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]}
\DeclareBoolOption{kpsewhich}
\DeclareBoolOption{langlinenos}
\DeclareBoolOption{draft}
\DeclareComplementaryOption{final}{draft}
\ProcessKeyvalOptions*
\ifthenelse{\boolean{minted@newfloat}}{\RequirePackage{newfloat}}{}
\ifthenelse{\boolean{minted@cache}}{%
\AtEndOfPackage{\ProvideDirectory{\minted@outputdir\minted@cachedir}}}{}
\newcommand{\minted@input}[1]{%
\IfFileExists{#1}%
{\input{#1}}%
{\PackageError{minted}{Missing Pygments output; \string\inputminted\space
was^^Jprobably given a file that does not exist--otherwise, you may need
^^Jthe outputdir package option, or may be using an incompatible build
tool\ifwindows,^^Jor may be using the kpsewhich option without having
PowerShell installed\fi}%
{This could be caused by using -output-directory or -aux-directory
^^Jwithout setting minted's outputdir, or by using a build tool that
^^Jchanges paths in ways minted cannot detect\ifwindows, or by using the
^^Jkpsewhich option without PowerShell\fi.}}%
}
\newcommand{\minted@infile}{\jobname.out.pyg}
\newcommand{\minted@cachelist}{}
\newcommand{\minted@addcachefile}[1]{%
\expandafter\long\expandafter\gdef\expandafter\minted@cachelist\expandafter{%
\minted@cachelist,^^J%
\space\space#1}%
\expandafter\gdef\csname minted@cached@#1\endcsname{}%
}
\newcommand{\minted@savecachelist}{%
\ifdefempty{\minted@cachelist}{}{%
\immediate\write\@mainaux{%
\string\gdef\string\minted@oldcachelist\string{%
\minted@cachelist\string}}%
}%
}
\newcommand{\minted@cleancache}{%
\ifcsname minted@oldcachelist\endcsname
\def\do##1{%
\ifthenelse{\equal{##1}{}}{}{%
\ifcsname minted@cached@##1\endcsname\else
\DeleteFile[\minted@outputdir\minted@cachedir]{##1}%
\fi
}%
}%
\expandafter\docsvlist\expandafter{\minted@oldcachelist}%
\else
\fi
}
\ifthenelse{\boolean{minted@draft}}%
{\AtEndDocument{%
\ifcsname minted@oldcachelist\endcsname
\let\minted@cachelist\minted@oldcachelist
\minted@savecachelist
\fi}}%
{\AtEndDocument{%
\minted@savecachelist
\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}
\else
\immediate\write18{which "#1" && touch "\jobname.aex"}
\IfFileExists{\jobname.aex}
{\AppExiststrue
\DeleteFile{\jobname.aex}}
{\AppExistsfalse}
\fi
}
\newcommand{\minted@optlistcl@g}{}
\newcommand{\minted@optlistcl@g@i}{}
\let\minted@lang\@empty
\newcommand{\minted@optlistcl@lang}{}
\newcommand{\minted@optlistcl@lang@i}{}
\newcommand{\minted@optlistcl@cmd}{}
\newcommand{\minted@optlistfv@g}{}
\newcommand{\minted@optlistfv@g@i}{}
\newcommand{\minted@optlistfv@lang}{}
\newcommand{\minted@optlistfv@lang@i}{}
\newcommand{\minted@optlistfv@cmd}{}
\newcommand{\minted@configlang}[1]{%
\def\minted@lang{#1}%
\ifcsname minted@optlistcl@lang\minted@lang\endcsname\else
\expandafter\gdef\csname minted@optlistcl@lang\minted@lang\endcsname{}%
\fi
\ifcsname minted@optlistcl@lang\minted@lang @i\endcsname\else
\expandafter\gdef\csname minted@optlistcl@lang\minted@lang @i\endcsname{}%
\fi
\ifcsname minted@optlistfv@lang\minted@lang\endcsname\else
\expandafter\gdef\csname minted@optlistfv@lang\minted@lang\endcsname{}%
\fi
\ifcsname minted@optlistfv@lang\minted@lang @i\endcsname\else
\expandafter\gdef\csname minted@optlistfv@lang\minted@lang @i\endcsname{}%
\fi
}
\newcommand{\minted@addto@optlistcl}[2]{%
\expandafter\def\expandafter#1\expandafter{#1%
\detokenize{#2}\space}}
\newcommand{\minted@addto@optlistcl@lang}[2]{%
\expandafter\let\expandafter\minted@tmp\csname #1\endcsname
\expandafter\def\expandafter\minted@tmp\expandafter{\minted@tmp%
\detokenize{#2}\space}%
\expandafter\let\csname #1\endcsname\minted@tmp}
\newcommand{\minted@def@optcl}[4][]{%
\ifthenelse{\equal{#1}{}}%
{\define@key{minted@opt@g}{#2}{%
\minted@addto@optlistcl{\minted@optlistcl@g}{#3=#4}%
\@namedef{minted@opt@g:#2}{#4}}%
\define@key{minted@opt@g@i}{#2}{%
\minted@addto@optlistcl{\minted@optlistcl@g@i}{#3=#4}%
\@namedef{minted@opt@g@i:#2}{#4}}%
\define@key{minted@opt@lang}{#2}{%
\minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang}{#3=#4}%
\@namedef{minted@opt@lang\minted@lang:#2}{#4}}%
\define@key{minted@opt@lang@i}{#2}{%
\minted@addto@optlistcl@lang{%
minted@optlistcl@lang\minted@lang @i}{#3=#4}%
\@namedef{minted@opt@lang\minted@lang @i:#2}{#4}}%
\define@key{minted@opt@cmd}{#2}{%
\minted@addto@optlistcl{\minted@optlistcl@cmd}{#3=#4}%
\@namedef{minted@opt@cmd:#2}{#4}}}%
{\define@key{minted@opt@g}{#2}[#1]{%
\minted@addto@optlistcl{\minted@optlistcl@g}{#3=#4}%
\@namedef{minted@opt@g:#2}{#4}}%
\define@key{minted@opt@g@i}{#2}[#1]{%
\minted@addto@optlistcl{\minted@optlistcl@g@i}{#3=#4}%
\@namedef{minted@opt@g@i:#2}{#4}}%
\define@key{minted@opt@lang}{#2}[#1]{%
\minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang}{#3=#4}%
\@namedef{minted@opt@lang\minted@lang:#2}{#4}}%
\define@key{minted@opt@lang@i}{#2}[#1]{%
\minted@addto@optlistcl@lang{%
minted@optlistcl@lang\minted@lang @i}{#3=#4}%
\@namedef{minted@opt@lang\minted@lang @i:#2}{#4}}%
\define@key{minted@opt@cmd}{#2}[#1]{%
\minted@addto@optlistcl{\minted@optlistcl@cmd}{#3=#4}%
\@namedef{minted@opt@cmd:#2}{#4}}}%
}
\edef\minted@hashchar{\string#}
\edef\minted@dollarchar{\string$}
\edef\minted@ampchar{\string&}
\edef\minted@underscorechar{\string_}
\edef\minted@tildechar{\string~}
\newcommand{\minted@escchars}{%
\let\#\minted@hashchar
\let\%\@percentchar
\let\{\@charlb
\let\}\@charrb
\let\$\minted@dollarchar
\let\&\minted@ampchar
\let\_\minted@underscorechar
\let\\\@backslashchar
\let~\minted@tildechar
\let\~\minted@tildechar
} %$ <- highlighting
\newcommand{\minted@addto@optlistcl@e}[2]{%
\begingroup
\minted@escchars
\xdef\minted@xtmp{#2}%
\endgroup
\expandafter\minted@addto@optlistcl@e@i\expandafter{\minted@xtmp}{#1}}
\def\minted@addto@optlistcl@e@i#1#2{%
\expandafter\def\expandafter#2\expandafter{#2#1\space}}
\newcommand{\minted@addto@optlistcl@lang@e}[2]{%
\begingroup
\minted@escchars
\xdef\minted@xtmp{#2}%
\endgroup
\expandafter\minted@addto@optlistcl@lang@e@i\expandafter{\minted@xtmp}{#1}}
\def\minted@addto@optlistcl@lang@e@i#1#2{%
\expandafter\let\expandafter\minted@tmp\csname #2\endcsname
\expandafter\def\expandafter\minted@tmp\expandafter{\minted@tmp#1\space}%
\expandafter\let\csname #2\endcsname\minted@tmp}
\newcommand{\minted@def@optcl@e}[4][]{%
\ifthenelse{\equal{#1}{}}%
{\define@key{minted@opt@g}{#2}{%
\minted@addto@optlistcl@e{\minted@optlistcl@g}{#3=#4}%
\@namedef{minted@opt@g:#2}{#4}}%
\define@key{minted@opt@g@i}{#2}{%
\minted@addto@optlistcl@e{\minted@optlistcl@g@i}{#3=#4}%
\@namedef{minted@opt@g@i:#2}{#4}}%
\define@key{minted@opt@lang}{#2}{%
\minted@addto@optlistcl@lang@e{minted@optlistcl@lang\minted@lang}{#3=#4}%
\@namedef{minted@opt@lang\minted@lang:#2}{#4}}%
\define@key{minted@opt@lang@i}{#2}{%
\minted@addto@optlistcl@lang@e{%
minted@optlistcl@lang\minted@lang @i}{#3=#4}%
\@namedef{minted@opt@lang\minted@lang @i:#2}{#4}}%
\define@key{minted@opt@cmd}{#2}{%
\minted@addto@optlistcl@e{\minted@optlistcl@cmd}{#3=#4}%
\@namedef{minted@opt@cmd:#2}{#4}}}%
{\define@key{minted@opt@g}{#2}[#1]{%
\minted@addto@optlistcl@e{\minted@optlistcl@g}{#3=#4}%
\@namedef{minted@opt@g:#2}{#4}}%
\define@key{minted@opt@g@i}{#2}[#1]{%
\minted@addto@optlistcl@e{\minted@optlistcl@g@i}{#3=#4}%
\@namedef{minted@opt@g@i:#2}{#4}}%
\define@key{minted@opt@lang}{#2}[#1]{%
\minted@addto@optlistcl@lang@e{minted@optlistcl@lang\minted@lang}{#3=#4}%
\@namedef{minted@opt@lang\minted@lang:#2}{#4}}%
\define@key{minted@opt@lang@i}{#2}[#1]{%
\minted@addto@optlistcl@lang@e{%
minted@optlistcl@lang\minted@lang @i}{#3=#4}%
\@namedef{minted@opt@lang\minted@lang @i:#2}{#4}}%
\define@key{minted@opt@cmd}{#2}[#1]{%
\minted@addto@optlistcl@e{\minted@optlistcl@cmd}{#3=#4}%
\@namedef{minted@opt@cmd:#2}{#4}}}%
}
\newcommand{\minted@def@optcl@style}{%
\define@key{minted@opt@g}{style}{%
\minted@addto@optlistcl{\minted@optlistcl@g}%
{-P style=##1 -P commandprefix=PYG##1}%
\minted@checkstyle{##1}%
\@namedef{minted@opt@g:style}{##1}}%
\define@key{minted@opt@g@i}{style}{%
\minted@addto@optlistcl{\minted@optlistcl@g@i}%
{-P style=##1 -P commandprefix=PYG##1}%
\minted@checkstyle{##1}%
\@namedef{minted@opt@g@i:style}{##1}}%
\define@key{minted@opt@lang}{style}{%
\minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang}%
{-P style=##1 -P commandprefix=PYG##1}%
\minted@checkstyle{##1}%
\@namedef{minted@opt@lang\minted@lang:style}{##1}}%
\define@key{minted@opt@lang@i}{style}{%
\minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang @i}%
{-P style=##1 -P commandprefix=PYG##1}%
\minted@checkstyle{##1}%
\@namedef{minted@opt@lang\minted@lang @i:style}{##1}}%
\define@key{minted@opt@cmd}{style}{%
\minted@addto@optlistcl{\minted@optlistcl@cmd}%
{-P style=##1 -P commandprefix=PYG##1}%
\minted@checkstyle{##1}%
\@namedef{minted@opt@cmd:style}{##1}}%
}
\newcommand{\minted@patch@Zsq}[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@checkstyle}[1]{%
\ifcsname minted@styleloaded@#1\endcsname\else
\expandafter\gdef\csname minted@styleloaded@#1\endcsname{}%
\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
\minted@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
\minted@input{\minted@outputdir\jobname.out.pyg}%
\endgroup}%
\ifx\@onlypreamble\@notprerr
\minted@patch@Zsq{#1}%
\else
\minted@patch@Zsq{#1}%
\AtBeginDocument{\minted@patch@Zsq{#1}}%
\fi
\fi
}
\ifthenelse{\boolean{minted@draft}}{\renewcommand{\minted@checkstyle}[1]{}}{}
\newcommand{\minted@def@optcl@switch}[2]{%
\define@booleankey{minted@opt@g}{#1}%
{\minted@addto@optlistcl{\minted@optlistcl@g}{#2=True}%
\@namedef{minted@opt@g:#1}{true}}
{\minted@addto@optlistcl{\minted@optlistcl@g}{#2=False}%
\@namedef{minted@opt@g:#1}{false}}
\define@booleankey{minted@opt@g@i}{#1}%
{\minted@addto@optlistcl{\minted@optlistcl@g@i}{#2=True}%
\@namedef{minted@opt@g@i:#1}{true}}
{\minted@addto@optlistcl{\minted@optlistcl@g@i}{#2=False}%
\@namedef{minted@opt@g@i:#1}{false}}
\define@booleankey{minted@opt@lang}{#1}%
{\minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang}{#2=True}%
\@namedef{minted@opt@lang\minted@lang:#1}{true}}
{\minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang}{#2=False}%
\@namedef{minted@opt@lang\minted@lang:#1}{false}}
\define@booleankey{minted@opt@lang@i}{#1}%
{\minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang @i}{#2=True}%
\@namedef{minted@opt@lang\minted@lang @i:#1}{true}}
{\minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang @i}{#2=False}%
\@namedef{minted@opt@lang\minted@lang @i:#1}{false}}
\define@booleankey{minted@opt@cmd}{#1}%
{\minted@addto@optlistcl{\minted@optlistcl@cmd}{#2=True}%
\@namedef{minted@opt@cmd:#1}{true}}
{\minted@addto@optlistcl{\minted@optlistcl@cmd}{#2=False}%
\@namedef{minted@opt@cmd:#1}{false}}
}
\newcommand{\minted@def@optfv}[1]{%
\define@key{minted@opt@g}{#1}{%
\expandafter\def\expandafter\minted@optlistfv@g\expandafter{%
\minted@optlistfv@g#1=##1,}%
\@namedef{minted@opt@g:#1}{##1}}
\define@key{minted@opt@g@i}{#1}{%
\expandafter\def\expandafter\minted@optlistfv@g@i\expandafter{%
\minted@optlistfv@g@i#1=##1,}%
\@namedef{minted@opt@g@i:#1}{##1}}
\define@key{minted@opt@lang}{#1}{%
\expandafter\let\expandafter\minted@tmp%
\csname minted@optlistfv@lang\minted@lang\endcsname
\expandafter\def\expandafter\minted@tmp\expandafter{%
\minted@tmp#1=##1,}%
\expandafter\let\csname minted@optlistfv@lang\minted@lang\endcsname%
\minted@tmp
\@namedef{minted@opt@lang\minted@lang:#1}{##1}}
\define@key{minted@opt@lang@i}{#1}{%
\expandafter\let\expandafter\minted@tmp%
\csname minted@optlistfv@lang\minted@lang @i\endcsname
\expandafter\def\expandafter\minted@tmp\expandafter{%
\minted@tmp#1=##1,}%
\expandafter\let\csname minted@optlistfv@lang\minted@lang @i\endcsname%
\minted@tmp
\@namedef{minted@opt@lang\minted@lang @i:#1}{##1}}
\define@key{minted@opt@cmd}{#1}{%
\expandafter\def\expandafter\minted@optlistfv@cmd\expandafter{%
\minted@optlistfv@cmd#1=##1,}%
\@namedef{minted@opt@cmd:#1}{##1}}
}
\newcommand{\minted@def@optfv@switch}[1]{%
\define@booleankey{minted@opt@g}{#1}%
{\expandafter\def\expandafter\minted@optlistfv@g\expandafter{%
\minted@optlistfv@g#1=true,}%
\@namedef{minted@opt@g:#1}{true}}%
{\expandafter\def\expandafter\minted@optlistfv@g\expandafter{%
\minted@optlistfv@g#1=false,}%
\@namedef{minted@opt@g:#1}{false}}%
\define@booleankey{minted@opt@g@i}{#1}%
{\expandafter\def\expandafter\minted@optlistfv@g@i\expandafter{%
\minted@optlistfv@g@i#1=true,}%
\@namedef{minted@opt@g@i:#1}{true}}%
{\expandafter\def\expandafter\minted@optlistfv@g@i\expandafter{%
\minted@optlistfv@g@i#1=false,}%
\@namedef{minted@opt@g@i:#1}{false}}%
\define@booleankey{minted@opt@lang}{#1}%
{\expandafter\let\expandafter\minted@tmp%
\csname minted@optlistfv@lang\minted@lang\endcsname
\expandafter\def\expandafter\minted@tmp\expandafter{%
\minted@tmp#1=true,}%
\expandafter\let\csname minted@optlistfv@lang\minted@lang\endcsname%
\minted@tmp
\@namedef{minted@opt@lang\minted@lang:#1}{true}}%
{\expandafter\let\expandafter\minted@tmp%
\csname minted@optlistfv@lang\minted@lang\endcsname
\expandafter\def\expandafter\minted@tmp\expandafter{%
\minted@tmp#1=false,}%
\expandafter\let\csname minted@optlistfv@lang\minted@lang\endcsname%
\minted@tmp
\@namedef{minted@opt@lang\minted@lang:#1}{false}}%
\define@booleankey{minted@opt@lang@i}{#1}%
{\expandafter\let\expandafter\minted@tmp%
\csname minted@optlistfv@lang\minted@lang @i\endcsname
\expandafter\def\expandafter\minted@tmp\expandafter{%
\minted@tmp#1=true,}%
\expandafter\let\csname minted@optlistfv@lang\minted@lang @i\endcsname%
\minted@tmp
\@namedef{minted@opt@lang\minted@lang @i:#1}{true}}%
{\expandafter\let\expandafter\minted@tmp%
\csname minted@optlistfv@lang\minted@lang @i\endcsname
\expandafter\def\expandafter\minted@tmp\expandafter{%
\minted@tmp#1=false,}%
\expandafter\let\csname minted@optlistfv@lang\minted@lang @i\endcsname%
\minted@tmp
\@namedef{minted@opt@lang\minted@lang @i:#1}{false}}%
\define@booleankey{minted@opt@cmd}{#1}%
{\expandafter\def\expandafter\minted@optlistfv@cmd\expandafter{%
\minted@optlistfv@cmd#1=true,}%
\@namedef{minted@opt@cmd:#1}{true}}%
{\expandafter\def\expandafter\minted@optlistfv@cmd\expandafter{%
\minted@optlistfv@cmd#1=false,}%
\@namedef{minted@opt@cmd:#1}{false}}%
}
\newboolean{minted@isinline}
\newcommand{\minted@fvset}{%
\expandafter\fvset\expandafter{\minted@optlistfv@g}%
\expandafter\let\expandafter\minted@tmp%
\csname minted@optlistfv@lang\minted@lang\endcsname
\expandafter\fvset\expandafter{\minted@tmp}%
\ifthenelse{\boolean{minted@isinline}}%
{\expandafter\fvset\expandafter{\minted@optlistfv@g@i}%
\expandafter\let\expandafter\minted@tmp%
\csname minted@optlistfv@lang\minted@lang @i\endcsname
\expandafter\fvset\expandafter{\minted@tmp}}%
{}%
\expandafter\fvset\expandafter{\minted@optlistfv@cmd}%
}
\def\minted@get@opt#1#2{%
\ifcsname minted@opt@cmd:#1\endcsname
\csname minted@opt@cmd:#1\endcsname
\else
\ifminted@isinline
\ifcsname minted@opt@lang\minted@lang @i:#1\endcsname
\csname minted@opt@lang\minted@lang @i:#1\endcsname
\else
\ifcsname minted@opt@g@i:#1\endcsname
\csname minted@opt@g@i:#1\endcsname
\else
\ifcsname minted@opt@lang\minted@lang:#1\endcsname
\csname minted@opt@lang\minted@lang:#1\endcsname
\else
\ifcsname minted@opt@g:#1\endcsname
\csname minted@opt@g:#1\endcsname
\else
#2%
\fi
\fi
\fi
\fi
\else
\ifcsname minted@opt@lang\minted@lang:#1\endcsname
\csname minted@opt@lang\minted@lang:#1\endcsname
\else
\ifcsname minted@opt@g:#1\endcsname
\csname minted@opt@g:#1\endcsname
\else
#2%
\fi
\fi
\fi
\fi
}%
\newcommand{\minted@def@opt}[2][]{%
\define@key{minted@opt@g}{#2}{%
\@namedef{minted@opt@g:#2}{##1}}
\define@key{minted@opt@g@i}{#2}{%
\@namedef{minted@opt@g@i:#2}{##1}}
\define@key{minted@opt@lang}{#2}{%
\@namedef{minted@opt@lang\minted@lang:#2}{##1}}
\define@key{minted@opt@lang@i}{#2}{%
\@namedef{minted@opt@lang\minted@lang @i:#2}{##1}}
\define@key{minted@opt@cmd}{#2}{%
\@namedef{minted@opt@cmd:#2}{##1}}
}
\newcommand{\minted@def@opt@switch}[2][false]{%
\define@booleankey{minted@opt@g}{#2}%
{\@namedef{minted@opt@g:#2}{true}}%
{\@namedef{minted@opt@g:#2}{false}}
\define@booleankey{minted@opt@g@i}{#2}%
{\@namedef{minted@opt@g@i:#2}{true}}%
{\@namedef{minted@opt@g@i:#2}{false}}
\define@booleankey{minted@opt@lang}{#2}%
{\@namedef{minted@opt@lang\minted@lang:#2}{true}}%
{\@namedef{minted@opt@lang\minted@lang:#2}{false}}
\define@booleankey{minted@opt@lang@i}{#2}%
{\@namedef{minted@opt@lang\minted@lang @i:#2}{true}}%
{\@namedef{minted@opt@lang\minted@lang @i:#2}{false}}
\define@booleankey{minted@opt@cmd}{#2}%
{\@namedef{minted@opt@cmd:#2}{true}}%
{\@namedef{minted@opt@cmd:#2}{false}}%
\@namedef{minted@opt@g:#2}{#1}%
}
\minted@def@optcl{encoding}{-P encoding}{#1}
\minted@def@optcl{outencoding}{-P outencoding}{#1}
\minted@def@optcl@e{escapeinside}{-P "escapeinside}{#1"}
\minted@def@optcl@switch{stripnl}{-P stripnl}
\minted@def@optcl@switch{stripall}{-P stripall}
\minted@def@optcl@switch{python3}{-P python3}
\minted@def@optcl@switch{funcnamehighlighting}{-P funcnamehighlighting}
\minted@def@optcl@switch{startinline}{-P startinline}
\ifthenelse{\boolean{minted@draft}}%
{\minted@def@optfv{gobble}}%
{\minted@def@optcl{gobble}{-F gobble:n}{#1}}
\minted@def@optcl{codetagify}{-F codetagify:codetags}{#1}
\minted@def@optcl{keywordcase}{-F keywordcase:case}{#1}
\minted@def@optcl@switch{texcl}{-P texcomments}
\minted@def@optcl@switch{texcomments}{-P texcomments}
\minted@def@optcl@switch{mathescape}{-P mathescape}
\ifcsname KV@FV@linenos\endcsname\else
\define@booleankey{FV}{linenos}%
{\@nameuse{FV@Numbers@left}}{\@nameuse{FV@Numbers@none}}
\fi
\minted@def@optfv@switch{linenos}
\minted@def@optcl@style
\minted@def@optfv{frame}
\minted@def@optfv{framesep}
\minted@def@optfv{framerule}
\minted@def@optfv{rulecolor}
\minted@def@optfv{numbersep}
\minted@def@optfv{numbers}
\minted@def@optfv{firstnumber}
\minted@def@optfv{stepnumber}
\minted@def@optfv{firstline}
\minted@def@optfv{lastline}
\minted@def@optfv{baselinestretch}
\minted@def@optfv{xleftmargin}
\minted@def@optfv{xrightmargin}
\minted@def@optfv{fillcolor}
\minted@def@optfv{tabsize}
\minted@def@optfv{fontfamily}
\minted@def@optfv{fontsize}
\minted@def@optfv{fontshape}
\minted@def@optfv{fontseries}
\minted@def@optfv{formatcom}
\minted@def@optfv{label}
\minted@def@optfv@switch{numberblanklines}
\minted@def@optfv@switch{showspaces}
\minted@def@optfv@switch{resetmargins}
\minted@def@optfv@switch{samepage}
\minted@def@optfv@switch{showtabs}
\minted@def@optfv@switch{obeytabs}
\minted@def@optfv@switch{breaklines}
\minted@def@optfv{breakindent}
\minted@def@optfv@switch{breakautoindent}
\minted@def@optfv{breaksymbol}
\minted@def@optfv{breaksymbolsep}
\minted@def@optfv{breaksymbolindent}
\minted@def@optfv{breaksymbolleft}
\minted@def@optfv{breaksymbolsepleft}
\minted@def@optfv{breaksymbolindentleft}
\minted@def@optfv{breaksymbolright}
\minted@def@optfv{breaksymbolsepright}
\minted@def@optfv{breaksymbolindentright}
\minted@def@opt@switch{breakbytoken}
\minted@def@opt{bgcolor}
\minted@def@opt@switch{autogobble}
\newcommand{\minted@encoding}{\minted@get@opt{encoding}{UTF8}}
\ifcsname KV@FV@breaklines\endcsname\else
\newboolean{FV@BreakLines}
\let\FV@ListProcessLine@Orig\FV@ListProcessLine
\define@booleankey{FV}{breaklines}%
{\FV@BreakLinestrue
\let\FV@ListProcessLine\FV@ListProcessLine@Break}%
{\FV@BreakLinesfalse
\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}{breaksymbolleft}{\def\FancyVerbBreakSymbolLeft{#1}}
\define@key{FV}{breaksymbol}{\fvset{breaksymbolleft=#1}}
\fvset{breaksymbolleft=\tiny\ensuremath{\hookrightarrow}}
\define@key{FV}{breaksymbolright}{\def\FancyVerbBreakSymbolRight{#1}}
\fvset{breaksymbolright={}}
\newdimen\FV@BreakSymbolSepLeft
\define@key{FV}{breaksymbolsepleft}{\FV@BreakSymbolSepLeft=#1}
\define@key{FV}{breaksymbolsep}{\fvset{breaksymbolsepleft=#1}}
\fvset{breaksymbolsepleft=1em}
\newdimen\FV@BreakSymbolSepRight
\define@key{FV}{breaksymbolsepright}{\FV@BreakSymbolSepRight=#1}
\fvset{breaksymbolsepright=1em}
\newdimen\FV@BreakSymbolIndentLeft
\settowidth{\FV@BreakSymbolIndentLeft}{\ttfamily xxxx}
\define@key{FV}{breaksymbolindentleft}{\FV@BreakSymbolIndentLeft=#1}
\define@key{FV}{breaksymbolindent}{\fvset{breaksymbolindentleft=#1}}
\newdimen\FV@BreakSymbolIndentRight
\settowidth{\FV@BreakSymbolIndentRight}{\ttfamily xxxx}
\define@key{FV}{breaksymbolindentright}{\FV@BreakSymbolIndentRight=#1}
\newcommand{\FancyVerbFormatBreakSymbolLeft}[1]{%
\ifnum\value{linenumber}=1\relax\else{#1}\fi}
\newcounter{FancyVerbLineBreakLast}
\newcommand{\FV@SetLineBreakLast}{%
\setcounter{FancyVerbLineBreakLast}{\value{linenumber}}}
\newcommand{\FancyVerbFormatBreakSymbolRight}[1]{%
\ifnum\value{linenumber}=\value{FancyVerbLineBreakLast}\relax\else{#1}\fi}
\newsavebox{\FV@LineBox}
\newsavebox{\FV@LineIndentBox}
\let\FV@LineIndentChars\@empty
\def\FV@GetNextChar{\let\FV@NextChar=}
\def\FV@CleanRemainingChars#1\FV@Undefined{}
\def\FV@GetLineIndent{\afterassignment\FV@CheckIndentChar\FV@GetNextChar}
\def\FV@CheckIndentChar{%
\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
}
\def\FV@makeLineNumber{%
\hss
\FancyVerbFormatBreakSymbolLeft{\FancyVerbBreakSymbolLeft}%
\hbox to \FV@BreakSymbolSepLeft{\hfill}%
\rlap{\hskip\linewidth
\hbox to \FV@BreakSymbolSepRight{\hfill}%
\FancyVerbFormatBreakSymbolRight{\FancyVerbBreakSymbolRight}%
\FV@SetLineBreakLast
}%
}
\def\FV@SaveLineBox#1{%
\savebox{\FV@LineBox}{%
\advance\linewidth by -\FV@BreakIndent
\hbox to \FV@BreakIndent{\hfill}%
\ifthenelse{\boolean{FV@BreakAutoIndent}}%
{\let\FV@LineIndentChars\@empty
\FV@GetLineIndent#1\FV@Undefined
\savebox{\FV@LineIndentBox}{\FV@LineIndentChars}%
\hbox to \wd\FV@LineIndentBox{\hfill}%
\advance\linewidth by -\wd\FV@LineIndentBox}%
{}%
\ifdefempty{\FancyVerbBreakSymbolLeft}{}%
{\hbox to \FV@BreakSymbolIndentLeft{\hfill}%
\advance\linewidth by -\FV@BreakSymbolIndentLeft}%
\ifdefempty{\FancyVerbBreakSymbolRight}{}%
{\advance\linewidth by -\FV@BreakSymbolIndentRight}%
\parbox[t]{\linewidth}{%
\raggedright
\leftlinenumbers*
\begin{internallinenumbers*}%
\let\makeLineNumber\FV@makeLineNumber
\noindent\hspace*{-\FV@BreakIndent}%
\ifdefempty{\FancyVerbBreakSymbolLeft}{}{%
\hspace*{-\FV@BreakSymbolIndentLeft}}%
\ifthenelse{\boolean{FV@BreakAutoIndent}}%
{\hspace*{-\wd\FV@LineIndentBox}}%
{}%
\strut#1\strut
\end{internallinenumbers*}
}%
\ifdefempty{\FancyVerbBreakSymbolRight}{}%
{\hbox to \FV@BreakSymbolIndentRight{\hfill}}%
}%
}
\def\FV@ListProcessLine@Break#1{%
\hbox to \hsize{%
\kern\leftmargin
\hbox to \linewidth{%
\ifx\FV@RightListFrame\relax\else
\advance\linewidth by -\FV@FrameSep
\advance\linewidth by -\FV@FrameRule
\fi
\ifx\FV@LeftListFrame\relax\else
\advance\linewidth by -\FV@FrameSep
\advance\linewidth by -\FV@FrameRule
\fi
\sbox{\FV@LineBox}{\FancyVerbFormatLine{#1}}%
\ifdim\wd\FV@LineBox>\linewidth
\setcounter{FancyVerbLineBreakLast}{0}%
\FV@SaveLineBox{#1}%
\ifdefempty{\FancyVerbBreakSymbolRight}{}{%
\let\FV@SetLineBreakLast\relax
\FV@SaveLineBox{#1}}%
\FV@LeftListNumber
\FV@LeftListFrame
\FancyVerbFormatLine{\usebox{\FV@LineBox}}%
\FV@RightListFrame
\FV@RightListNumber
\else
\FV@LeftListNumber
\FV@LeftListFrame
\FancyVerbFormatLine{%
\parbox[t]{\linewidth}{\noindent\strut#1\strut}}%
\FV@RightListFrame
\FV@RightListNumber
\fi}%
\hss}\baselineskip\z@\lineskip\z@}
\fi
\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}
\newcounter{minted@FancyVerbLineTemp}
\newcommand{\minted@write@detok}[1]{%
\immediate\write\FV@OutFile{\detokenize{#1}}}
\newcommand{\minted@FVB@VerbatimOut}[1]{%
\setcounter{minted@FancyVerbLineTemp}{\value{FancyVerbLine}}%
\@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{\minted@FVE@VerbatimOut}{%
\immediate\closeout\FV@OutFile\endgroup\@esphack
\setcounter{FancyVerbLine}{\value{minted@FancyVerbLineTemp}}}%
\newcommand{\MintedPygmentize}{pygmentize}
\newcommand{\minted@pygmentize}[2][\minted@outputdir\jobname.pyg]{%
\ifthenelse{\equal{\minted@get@opt{autogobble}{false}}{true}}%
{\def\minted@codefile{\minted@outputdir\jobname.pyg}}%
{\def\minted@codefile{#1}}%
\ifthenelse{\boolean{minted@isinline}}%
{\def\minted@optlistcl@inlines{%
\minted@optlistcl@g@i
\csname minted@optlistcl@lang\minted@lang @i\endcsname}}%
{\let\minted@optlistcl@inlines\@empty}%
\def\minted@cmd{%
\ifminted@kpsewhich\ifwindows powershell\space\fi\fi
\MintedPygmentize\space -l #2
-f latex -F tokenmerge
\minted@optlistcl@g \csname minted@optlistcl@lang\minted@lang\endcsname
\minted@optlistcl@inlines
\minted@optlistcl@cmd -o "\minted@outputdir\minted@infile"
\ifminted@kpsewhich
\ifwindows
\detokenize{$}(kpsewhich "\minted@codefile")%
\else
\detokenize{`}kpsewhich "\minted@codefile"
\detokenize{||} "\minted@codefile"\detokenize{`}%
\fi
\else
"\minted@codefile"
\fi}%
% For debugging, uncomment: %%%%
% \immediate\typeout{\minted@cmd}%
% %%%%
\ifthenelse{\boolean{minted@cache}}%
{%
\ifx\XeTeXinterchartoks\minted@undefined
\ifthenelse{\equal{\minted@get@opt{autogobble}{false}}{true}}%
{\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{\equal{\minted@get@opt{autogobble}{false}}{true}}%
{\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(\"}#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}%
\minted@input{\minted@outputdir\jobname.mintedmd5}%
\fi
\edef\minted@infile{\minted@cachedir/\minted@hash.pygtex}%
\IfFileExists{\minted@infile}{}{%
\ifthenelse{\equal{\minted@get@opt{autogobble}{false}}{true}}{%
%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(\"}#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{\equal{\minted@get@opt{autogobble}{false}}{true}}{%
%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(\"}#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}%
}
\def\FV@SpaceMMode{ }
\newcommand{\minted@inputpyg}{%
\everymath\expandafter{\the\everymath\let\FV@Space\FV@SpaceMMode}%
\ifthenelse{\boolean{minted@isinline}}%
{\ifthenelse{\equal{\minted@get@opt{breaklines}{false}}{true}}%
{\let\FV@BeginVBox\relax
\let\FV@EndVBox\relax
\def\FV@BProcessLine##1{\FancyVerbFormatLine{##1}}%
\ifthenelse{\equal{\minted@get@opt{breakbytoken}{false}}{true}}%
{\expandafter\let\expandafter\minted@orig@PYG%
\csname PYG\minted@get@opt{style}{default}\endcsname
\expandafter\def\csname PYG\minted@get@opt{style}{default}\endcsname##1##2{%
\allowbreak{}\hbox{\minted@orig@PYG{##1}{##2}}}%
\minted@inputpyg@inline}%
{\minted@inputpyg@inline}}%
{\minted@inputpyg@inline}}%
{\ifthenelse{\equal{\minted@get@opt{breaklines}{false}}{true}}%
{\ifthenelse{\equal{\minted@get@opt{breakbytoken}{false}}{true}}%
{\expandafter\let\expandafter\minted@orig@PYG%
\csname PYG\minted@get@opt{style}{default}\endcsname
\expandafter\def\csname PYG\minted@get@opt{style}{default}\endcsname##1##2{%
\allowbreak{}\hbox{\minted@orig@PYG{##1}{##2}}}%
\minted@inputpyg@block}%
{\minted@inputpyg@block}}%
{\minted@inputpyg@block}}%
}
\def\minted@inputpyg@inline{%
\ifthenelse{\equal{\minted@get@opt{bgcolor}{}}{}}%
{\minted@input{\minted@outputdir\minted@infile}}%
{\colorbox{\minted@get@opt{bgcolor}{}}{\minted@input{\minted@outputdir\minted@infile}}}%
}
\def\minted@inputpyg@block{%
\ifthenelse{\equal{\minted@get@opt{bgcolor}{}}{}}%
{\minted@input{\minted@outputdir\minted@infile}}%
{\begin{minted@colorbg}{\minted@get@opt{bgcolor}{}}%
\minted@input{\minted@outputdir\minted@infile}%
\end{minted@colorbg}}}
\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@opt@g}{#2}}%
{\minted@configlang{#1}%
\setkeys{minted@opt@lang}{#2}}}
\newcommand{\setmintedinline}[2][]{%
\ifthenelse{\equal{#1}{}}%
{\setkeys{minted@opt@g@i}{#2}}%
{\minted@configlang{#1}%
\setkeys{minted@opt@lang@i}{#2}}}
\setmintedinline[php]{startinline=true}
\newcommand{\usemintedstyle}[2][]{\setminted[#1]{style=#2}}
\begingroup
\catcode`\ =\active
\catcode`\^^I=\active
\gdef\minted@defwhitespace@retok{\def {\noexpand\FV@Space}\def^^I{\noexpand\FV@Tab}}%
\endgroup
\newcommand{\minted@writecmdcode}[1]{%
\immediate\openout\minted@code\jobname.pyg\relax
\immediate\write\minted@code{\detokenize{#1}}%
\immediate\closeout\minted@code}
\newrobustcmd{\mintinline}[2][]{%
\begingroup
\setboolean{minted@isinline}{true}%
\minted@configlang{#2}%
\setkeys{minted@opt@cmd}{#1}%
\minted@fvset
\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
\catcode`\^^I=\active
\minted@inline@ii}
\ifthenelse{\boolean{minted@draft}}%
{\newcommand{\minted@inline@iii}[1]{%
\endgroup
\begingroup
\minted@defwhitespace@retok
\everyeof{\noexpand}%
\endlinechar-1\relax
\let\do\@makeother\dospecials
\catcode`\ =\active
\catcode`\^^I=\active
\xdef\minted@tmp{\scantokens{#1}}%
\endgroup
\let\FV@Line\minted@tmp
\def\FV@SV@minted@tmp{%
\FV@Gobble
\expandafter\FV@ProcessLine\expandafter{\FV@Line}}%
\ifthenelse{\equal{\minted@get@opt{breaklines}{false}}{true}}%
{\let\FV@BeginVBox\relax
\let\FV@EndVBox\relax
\def\FV@BProcessLine##1{\FancyVerbFormatLine{##1}}%
\BUseVerbatim{minted@tmp}}%
{\BUseVerbatim{minted@tmp}}%
\endgroup}}%
{\newcommand{\minted@inline@iii}[1]{%
\endgroup
\minted@writecmdcode{#1}%
\RecustomVerbatimEnvironment{Verbatim}{BVerbatim}{}%
\setcounter{minted@FancyVerbLineTemp}{\value{FancyVerbLine}}%
\minted@pygmentize{\minted@lang}%
\setcounter{FancyVerbLine}{\value{minted@FancyVerbLineTemp}}%
\endgroup}}
\newrobustcmd{\mint}[2][]{%
\begingroup
\minted@configlang{#2}%
\setkeys{minted@opt@cmd}{#1}%
\minted@fvset
\begingroup
\let\do\@makeother\dospecials
\catcode`\{=1
\catcode`\}=2
\catcode`\^^I=\active
\@ifnextchar\bgroup
{\mint@iii}%
{\catcode`\{=12\catcode`\}=12
\mint@i}}
\def\mint@i#1{%
\endgroup
\def\mint@ii##1#1{%
\mint@iii{##1}}%
\begingroup
\let\do\@makeother\dospecials
\catcode`\^^I=\active
\mint@ii}
\ifthenelse{\boolean{minted@draft}}%
{\newcommand{\mint@iii}[1]{%
\endgroup
\begingroup
\minted@defwhitespace@retok
\everyeof{\noexpand}%
\endlinechar-1\relax
\let\do\@makeother\dospecials
\catcode`\ =\active
\catcode`\^^I=\active
\xdef\minted@tmp{\scantokens{#1}}%
\endgroup
\let\FV@Line\minted@tmp
\def\FV@SV@minted@tmp{%
\FV@CodeLineNo=1\FV@StepLineNo
\FV@Gobble
\expandafter\FV@ProcessLine\expandafter{\FV@Line}}%
\minted@langlinenoson
\UseVerbatim{minted@tmp}%
\minted@langlinenosoff
\endgroup}}%
{\newcommand{\mint@iii}[1]{%
\endgroup
\minted@writecmdcode{#1}%
\minted@langlinenoson
\minted@pygmentize{\minted@lang}%
\minted@langlinenosoff
\endgroup}}
\ifthenelse{\boolean{minted@draft}}%
{\newenvironment{minted}[2][]
{\VerbatimEnvironment
\minted@configlang{#2}%
\setkeys{minted@opt@cmd}{#1}%
\minted@fvset
\minted@langlinenoson
\begin{Verbatim}}%
{\end{Verbatim}%
\minted@langlinenosoff}}%
{\newenvironment{minted}[2][]
{\VerbatimEnvironment
\let\FVB@VerbatimOut\minted@FVB@VerbatimOut
\let\FVE@VerbatimOut\minted@FVE@VerbatimOut
\minted@configlang{#2}%
\setkeys{minted@opt@cmd}{#1}%
\minted@fvset
\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][]{%
\begingroup
\minted@configlang{#2}%
\setkeys{minted@optcmd}{#1}%
\minted@fvset
\VerbatimInput{#3}%
\endgroup}}%
{\newcommand{\inputminted}[3][]{%
\begingroup
\minted@configlang{#2}%
\setkeys{minted@opt@cmd}{#1}%
\minted@fvset
\minted@pygmentize[#3]{#2}%
\endgroup}}
\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}}%
}
\ifthenelse{\boolean{minted@newfloat}}%
{\@ifundefined{minted@float@within}%
{\DeclareFloatingEnvironment[fileext=lol,placement=h]{listing}}%
{\def\minted@tmp#1{%
\DeclareFloatingEnvironment[fileext=lol,placement=h, within=#1]{listing}}%
\expandafter\minted@tmp\expandafter{\minted@float@within}}}%
{\@ifundefined{minted@float@within}%
{\newfloat{listing}{h}{lol}}%
{\newfloat{listing}{h}{lol}[\minted@float@within]}}
\ifminted@newfloat\else
\newcommand{\listingscaption}{Listing}
\floatname{listing}{\listingscaption}
\newcommand{\listoflistingscaption}{List of Listings}
\providecommand{\listoflistings}{\listof{listing}{\listoflistingscaption}}
\fi
\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}%
}
\endinput
%%
%% End of file `minted.sty'.