%% %% This is file `minted.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% minted.dtx (with options: `package') %% Copyright 2013--2022 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} [2023/12/18 v2.9 Yet another Pygments shim for LaTeX] \RequirePackage{keyval} \RequirePackage{kvoptions} \RequirePackage{fvextra}[2022/11/30] \RequirePackage{ifthen} \IfFileExists{shellesc.sty} {\RequirePackage{shellesc} \@ifpackagelater{shellesc}{2016/04/29} {} {\protected\def\ShellEscape{\immediate\write18 }}} {\protected\def\ShellEscape{\immediate\write18 }} \RequirePackage{ifplatform} \RequirePackage{pdftexcmds} \RequirePackage{etoolbox} \RequirePackage{xstring} \RequirePackage{lineno} \RequirePackage{framed} \RequirePackage{catchfile} \AtEndPreamble{% \@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] \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]} \DeclareBoolOption{finalizecache} \DeclareBoolOption{frozencache} \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{inputlanglinenos} \DeclareBoolOption{kpsewhich} \DeclareBoolOption{langlinenos} \DeclareBoolOption{draft} \DeclareComplementaryOption{final}{draft} \ProcessKeyvalOptions* \ifthenelse{\boolean{minted@newfloat}}{\RequirePackage{newfloat}}{\RequirePackage{float}} \ifcsname tikzifexternalizing\endcsname \tikzifexternalizing{\minted@drafttrue\minted@cachefalse}{} \else \ifcsname tikzexternalrealjob\endcsname \minted@drafttrue \minted@cachefalse \else \fi \fi \ifthenelse{\boolean{minted@finalizecache}}% {\ifthenelse{\boolean{minted@frozencache}}% {\PackageError{minted}% {Options "finalizecache" and "frozencache" are not compatible}% {Options "finalizecache" and "frozencache" are not compatible}}% {}}% {} \ifthenelse{\boolean{minted@cache}}% {\ifthenelse{\boolean{minted@frozencache}}% {}% {\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,^^Jor may be using frozencache with a missing file}% {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, ^^Jor using frozencache with a missing file.}}% } \newcommand{\minted@infile}{\minted@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 \StrSubstitute{\minted@oldcachelist}{,}{,^^J }[\minted@cachelist] \minted@savecachelist \fi}}% {\ifthenelse{\boolean{minted@frozencache}}% {\AtEndDocument{% \ifcsname minted@oldcachelist\endcsname \StrSubstitute{\minted@oldcachelist}{,}{,^^J }[\minted@cachelist] \minted@savecachelist \fi}}% {\AtEndDocument{% \minted@savecachelist \minted@cleancache}}}% \ifwindows \providecommand{\DeleteFile}[2][]{% \ifthenelse{\equal{#1}{}}% {\IfFileExists{#2}{\ShellEscape{del #2}}{}}% {\IfFileExists{#1/#2}{% \StrSubstitute{#1}{/}{\@backslashchar}[\minted@windir] \ShellEscape{del \minted@windir\@backslashchar #2}}{}}} \else \providecommand{\DeleteFile}[2][]{% \ifthenelse{\equal{#1}{}}% {\IfFileExists{#2}{\ShellEscape{rm #2}}{}}% {\IfFileExists{#1/#2}{\ShellEscape{rm #1/#2}}{}}} \fi \ifwindows \newcommand{\ProvideDirectory}[1]{% \StrSubstitute{#1}{/}{\@backslashchar}[\minted@windir] \ShellEscape{if not exist \minted@windir\space mkdir \minted@windir}} \else \newcommand{\ProvideDirectory}[1]{% \ShellEscape{mkdir -p #1}} \fi \newboolean{AppExists} \newread\minted@appexistsfile \newcommand{\TestAppExists}[1]{% \ifwindows \DeleteFile{\minted@jobname.aex}% \ShellEscape{for \string^\@percentchar i in (#1.exe #1.bat #1.cmd) do set > \minted@jobname.aex > \minted@jobname.aex}% %$ <- balance syntax highlighting \immediate\openin\minted@appexistsfile\minted@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{\minted@jobname.aex}% \else \ShellEscape{command -v #1 && touch \minted@jobname.aex}% \IfFileExists{\minted@jobname.aex}% {\AppExiststrue \DeleteFile{\minted@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 } \ifwindows \newcommand{\minted@optlistcl@quote}[2]{% \detokenize{#1="#2"}} \else \newcommand{\minted@optlistcl@quote}[2]{% \detokenize{#1='#2'}} \fi \newcommand{\minted@addto@optlistcl}[3]{% \expandafter\def\expandafter#1\expandafter{#1% \minted@optlistcl@quote{#2}{#3}\space}} \newcommand{\minted@addto@optlistcl@lang}[3]{% \expandafter\let\expandafter\minted@tmp\csname #1\endcsname \expandafter\def\expandafter\minted@tmp\expandafter{\minted@tmp% \minted@optlistcl@quote{#2}{#3}\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}}}% } \begingroup \catcode`\!=0 !catcode`!\=12 !gdef!minted@escape#1{% !expandafter!minted@escape@i!detokenize{#1}\!FV@Sentinel} !gdef!minted@escape@i#1\#2!FV@Sentinel{% !if!relax!detokenize{#2}!relax !expandafter!@firstoftwo !else !expandafter!@secondoftwo !fi {#1!minted@escape@end\#2!FV@Sentinel} {#1!minted@escape@esc\#2!FV@Sentinel}} !gdef!minted@escape@end#1!FV@Sentinel{} !gdef!minted@escape@esc\#1#2!FV@Sentinel{% #1!minted@escape@i#2!FV@Sentinel} !endgroup \newcommand{\minted@addto@optlistcl@e}[3]{% \edef\minted@tmp{\minted@escape{#3}}% \expandafter\minted@addto@optlistcl@e@i\expandafter{\minted@tmp}{#1}{#2}} \def\minted@addto@optlistcl@e@i#1#2#3{% \expandafter\def\expandafter#2\expandafter{#2\minted@optlistcl@quote{#3}{#1}\space}} \newcommand{\minted@addto@optlistcl@lang@e}[3]{% \edef\minted@tmp{\minted@escape{#3}}% \expandafter\minted@addto@optlistcl@lang@e@i\expandafter{\minted@tmp}{#1}{#2}} \def\minted@addto@optlistcl@lang@e@i#1#2#3{% \expandafter\let\expandafter\minted@tmp\csname #2\endcsname \expandafter\def\expandafter\minted@tmp\expandafter{\minted@tmp\minted@optlistcl@quote{#3}{#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@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}% } \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}} \ifstrempty{#1}{}{\@namedef{minted@opt@g:#2}{#1}}% } \newcommand{\minted@def@opt@detok}[2][]{% \define@key{minted@opt@g}{#2}{% \@namedef{minted@opt@g:#2}{\detokenize{##1}}} \define@key{minted@opt@g@i}{#2}{% \@namedef{minted@opt@g@i:#2}{\detokenize{##1}}} \define@key{minted@opt@lang}{#2}{% \@namedef{minted@opt@lang\minted@lang:#2}{\detokenize{##1}}} \define@key{minted@opt@lang@i}{#2}{% \@namedef{minted@opt@lang\minted@lang @i:#2}{\detokenize{##1}}} \define@key{minted@opt@cmd}{#2}{% \@namedef{minted@opt@cmd:#2}{\detokenize{##1}}} \ifstrempty{#1}{}{\@namedef{minted@opt@g:#2}{\detokenize{#1}}}% } \newcommand{\minted@generate@PYGdef}[1]{% \ifthenelse{\boolean{minted@cache}}% {\def\minted@pygstylepath@load{\minted@outputdir\minted@cachedir/#1.pygstyle}% \minted@addcachefile{#1.pygstyle}}% {\def\minted@pygstylepath@load{\minted@outputdir\minted@jobname.out.pyg}}% \ifwindows \StrSubstitute{\minted@pygstylepath@load}% {/}{\@backslashchar}[\minted@pygstylepath@save]% \else \let\minted@pygstylepath@save\minted@pygstylepath@load \fi \IfFileExists{\minted@pygstylepath@load}% {}% {\ifthenelse{\boolean{minted@frozencache}}% {\PackageError{minted}% {Missing style definition for #1 with frozencache}% {Missing style definition for #1 with frozencache}}% {}% \ShellEscape{% \MintedPygmentize\space -S #1 -f latex -P commandprefix=PYG > \minted@pygstylepath@save }% }% \CatchFileDef{\minted@tmp@filecontents}% {\minted@pygstylepath@load}{\catcode`@=11\catcode`\%=14\catcode``=12\endlinechar=-1}% \begingroup \let\PYG\relax \minted@tmp@filecontents \ifx\PYG\relax \ifthenelse{\boolean{minted@frozencache}}% {\PackageError{minted}% {Outdated style definition for #1 with frozencache}% {Outdated style definition for #1 with frozencache}}% {}% \ShellEscape{% \MintedPygmentize\space -S #1 -f latex -P commandprefix=PYG > \minted@pygstylepath@save }% \CatchFileDef{\minted@tmp@filecontents}% {\minted@pygstylepath@load}{\catcode`@=11\catcode`\%=14\catcode``=12\endlinechar=-1}% \minted@tmp@filecontents \ifx\PYG\relax \PackageError{minted}% {Cannot find Pygments style #1}% {Cannot find Pygments style #1}% \fi \fi \expandafter\global\expandafter\let\csname minted@PYGdef@#1\endcsname% \minted@tmp@filecontents \endgroup } \newcommand{\minted@defstyle}[1]{% \edef\minted@style{#1}% \ifcsname minted@PYGdef@\minted@style\endcsname\else \expandafter\minted@generate@PYGdef\expandafter{\minted@style}% \fi \csname minted@PYGdef@\minted@style\endcsname \minted@patch@PYGZsq \minted@patch@PYGZhy \ifthenelse{\equal{\minted@get@opt{ignorelexererrors}{true}}{true}}% {\let\PYG@tok@err\relax}{}} \ifthenelse{\boolean{minted@draft}}{\renewcommand{\minted@defstyle}[1]{}}{} \newcommand{\minted@patch@PYGZsq}{% \ifcsname PYGZsq\endcsname \expandafter\ifdefstring\expandafter{\csname PYGZsq\endcsname}{\char`\'}% {\minted@patch@PYGZsq@i}% {}% \fi } \begingroup \catcode`\'=\active \gdef\minted@patch@PYGZsq@i{\gdef\PYGZsq{'}} \endgroup \newcommand{\minted@patch@PYGZhy}{% \ifcsname PYGZhy\endcsname \expandafter\ifdefstring\expandafter{\csname PYGZhy\endcsname}{\char`\-}% {\def\PYGZhy{\mbox{-}}}% {}% \fi } \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}% } \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 }% \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} \minted@def@optfv@switch{linenos} \minted@def@opt@detok{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{labelposition} \minted@def@optfv{highlightlines} \minted@def@optfv{highlightcolor} \minted@def@optfv{space} \minted@def@optfv{spacecolor} \minted@def@optfv{tab} \minted@def@optfv{tabcolor} \minted@def@optfv{highlightcolor} \minted@def@optfv@switch{beameroverlays} \minted@def@optfv@switch{curlyquotes} \minted@def@optfv@switch{numberfirstline} \minted@def@optfv@switch{numberblanklines} \minted@def@optfv@switch{stepnumberfromfirst} \minted@def@optfv@switch{stepnumberoffsetvalues} \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@switch{breakbytoken} \minted@def@optfv@switch{breakbytokenanywhere} \minted@def@optfv{breakindent} \minted@def@optfv{breakindentnchars} \minted@def@optfv@switch{breakautoindent} \minted@def@optfv{breaksymbol} \minted@def@optfv{breaksymbolsep} \minted@def@optfv{breaksymbolsepnchars} \minted@def@optfv{breaksymbolindent} \minted@def@optfv{breaksymbolindentnchars} \minted@def@optfv{breaksymbolleft} \minted@def@optfv{breaksymbolsepleft} \minted@def@optfv{breaksymbolsepleftnchars} \minted@def@optfv{breaksymbolindentleft} \minted@def@optfv{breaksymbolindentleftnchars} \minted@def@optfv{breaksymbolright} \minted@def@optfv{breaksymbolsepright} \minted@def@optfv{breaksymbolseprightnchars} \minted@def@optfv{breaksymbolindentright} \minted@def@optfv{breaksymbolindentrightnchars} \minted@def@optfv{breakbefore} \minted@def@optfv{breakbeforesymbolpre} \minted@def@optfv{breakbeforesymbolpost} \minted@def@optfv@switch{breakbeforeinrun} \minted@def@optfv{breakafter} \minted@def@optfv@switch{breakafterinrun} \minted@def@optfv{breakaftersymbolpre} \minted@def@optfv{breakaftersymbolpost} \minted@def@optfv@switch{breakanywhere} \minted@def@optfv{breakanywheresymbolpre} \minted@def@optfv{breakanywheresymbolpost} \minted@def@optfv{fontencoding} \minted@def@opt{bgcolor} \minted@def@opt@switch{autogobble} \minted@def@opt@switch{ignorelexererrors} \newcommand{\minted@encoding}{\minted@get@opt{encoding}{UTF8}} \newenvironment{minted@snugshade*}[1]{% \def\FrameCommand##1{\hskip\@totalleftmargin \colorbox{#1}{##1}% \hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth}% \MakeFramed{\advance\hsize-\width \@totalleftmargin\z@ \linewidth\hsize \advance\labelsep\fboxsep \@setminipage}% }{\par\unskip\@minipagefalse\endMakeFramed} \newsavebox{\minted@bgbox} \newenvironment{minted@colorbg}[1]{% \setlength{\OuterFrameSep}{0pt}% \let\minted@tmp\FV@NumberSep \edef\FV@NumberSep{% \the\numexpr\dimexpr\minted@tmp+\number\fboxsep\relax sp\relax}% \medskip \begin{minted@snugshade*}{#1}} {\end{minted@snugshade*}% \medskip\noindent} \newwrite\minted@code \newcommand{\minted@savecode}[1]{ \immediate\openout\minted@code\minted@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}}}% \ifcsname MintedPygmentize\endcsname\else \newcommand{\MintedPygmentize}{pygmentize} \fi \newcounter{minted@pygmentizecounter} \ifwindows \newcommand{\MintedPython}{python} \else \newcommand{\MintedPython}{python3} \fi \newcommand{\minted@check@MintedPython}{% \ifcsname minted@MintedPython@\MintedPython\endcsname \else \let\minted@altpython\minted@undefined \ifdefstring{\MintedPython}{python}{\def\minted@altpython{python3}}{}% \ifdefstring{\MintedPython}{python3}{\def\minted@altpython{python}}{}% \ifx\minted@altpython\minted@undefined\relax \TestAppExists{\MintedPython}% \ifAppExists \expandafter\global\expandafter\let% \csname minted@MintedPython@\MintedPython\endcsname\relax \else \PackageError{minted}% {Failed to find Python executable \MintedPython; check Python installation (including PATH), or redefine \string\MintedPython}% {Failed to find Python executable \MintedPython; check Python installation (including PATH), or redefine \string\MintedPython}% \fi \else \ifcsname minted@MintedPython@\minted@altpython\endcsname \let\MintedPython\minted@altpython \else \TestAppExists{\MintedPython}% \ifAppExists \expandafter\global\expandafter\let% \csname minted@MintedPython@\MintedPython\endcsname\relax \else \TestAppExists{\minted@altpython}% \ifAppExists \expandafter\global\expandafter\let% \csname minted@MintedPython@\minted@altpython\endcsname\relax \let\MintedPython\minted@altpython \else \PackageError{minted}% {Failed to find Python executables python or python3; check Python installation (including PATH), or redefine \string\MintedPython}% {Failed to find Python executables python or python3; check Python installation (including PATH), or redefine \string\MintedPython}% \fi \fi \fi \fi \fi } \ifwindows \def\minted@opt@quote#1{\detokenize{"#1"}} \else \def\minted@opt@quote#1{\detokenize{'#1'}} \fi \newcommand{\minted@pygmentize}[2][\minted@outputdir\minted@jobname.pyg]{% \minted@defstyle{\minted@get@opt{style}{default}}% \stepcounter{minted@pygmentizecounter}% \ifthenelse{\equal{\minted@get@opt{autogobble}{false}}{true}}% {\def\minted@codefile{\minted@outputdir\minted@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 \detokenize{for /f "usebackq tokens=*"}\space\@percentchar\detokenize{a in (`kpsewhich}\space\minted@codefile\detokenize{`) do}\space \fi \fi \MintedPygmentize\space -l \minted@opt@quote{#2} -f latex -P commandprefix=PYG -F tokenmerge \minted@optlistcl@g \csname minted@optlistcl@lang\minted@lang\endcsname \minted@optlistcl@inlines \minted@optlistcl@cmd -o \minted@outputdir\minted@infile\space \ifminted@kpsewhich \ifwindows \@percentchar\detokenize{a}% \else \detokenize{`}kpsewhich \minted@codefile\space \detokenize{||} \minted@codefile\detokenize{`}% \fi \else \minted@codefile \fi}% % For debugging, uncomment: %%%% % \immediate\typeout{\minted@cmd}% % %%%% \ifthenelse{\boolean{minted@cache}}% {% \ifminted@frozencache \else \ifthenelse{\equal{\minted@get@opt{autogobble}{false}}{true}}% {\edef\minted@hash{% \pdf@filemdfivesum{#1}% \pdf@mdfivesum{\minted@cmd\space% autogobble(\the\numexpr\FancyVerbStartNum\relax-% \the\numexpr\FancyVerbStopNum\relax)}}}% {\edef\minted@hash{% \pdf@filemdfivesum{#1}% \pdf@mdfivesum{\minted@cmd}}}% \edef\minted@infile{\minted@cachedir/\minted@hash.pygtex}% \IfFileExists{\minted@infile}{}{% \ifthenelse{\equal{\minted@get@opt{autogobble}{false}}{true}}{% \minted@autogobble{#1}}{}% \ShellEscape{\minted@cmd}}% \fi \ifthenelse{\boolean{minted@finalizecache}}% {% \edef\minted@cachefilename{listing\arabic{minted@pygmentizecounter}.pygtex}% \edef\minted@actualinfile{\minted@cachedir/\minted@cachefilename}% \ifwindows \StrSubstitute{\minted@infile}{/}{\@backslashchar}[\minted@infile@windows] \StrSubstitute{\minted@actualinfile}{/}{\@backslashchar}[\minted@actualinfile@windows] \ShellEscape{move /y \minted@outputdir\minted@infile@windows\space\minted@outputdir\minted@actualinfile@windows}% \else \ShellEscape{mv -f \minted@outputdir\minted@infile\space\minted@outputdir\minted@actualinfile}% \fi \let\minted@infile\minted@actualinfile \expandafter\minted@addcachefile\expandafter{\minted@cachefilename}% }% {\ifthenelse{\boolean{minted@frozencache}}% {% \edef\minted@cachefilename{listing\arabic{minted@pygmentizecounter}.pygtex}% \edef\minted@infile{\minted@cachedir/\minted@cachefilename}% \expandafter\minted@addcachefile\expandafter{\minted@cachefilename}}% {\expandafter\minted@addcachefile\expandafter{\minted@hash.pygtex}}% }% \minted@inputpyg}% {% \ifthenelse{\equal{\minted@get@opt{autogobble}{false}}{true}}{% \minted@autogobble{#1}}{}% \ShellEscape{\minted@cmd}% \minted@inputpyg}% } \def\minted@autogobble#1{% \edef\minted@argone@esc{#1}% \StrSubstitute{\minted@argone@esc}{\@backslashchar}{\@backslashchar\@backslashchar}[\minted@argone@esc]% \StrSubstitute{\minted@argone@esc}{"}{\@backslashchar"}[\minted@argone@esc]% \edef\minted@tmpfname@esc{\minted@outputdir\minted@jobname}% \StrSubstitute{\minted@tmpfname@esc}{\@backslashchar}{\@backslashchar\@backslashchar}[\minted@tmpfname@esc]% \StrSubstitute{\minted@tmpfname@esc}{"}{\@backslashchar"}[\minted@tmpfname@esc]% %Need a version of open() that supports encoding under Python 2 \minted@check@MintedPython \edef\minted@autogobblecmd{% \ifminted@kpsewhich \ifwindows \detokenize{for /f "usebackq tokens=*" }\@percentchar\detokenize{a in (`kpsewhich} #1\detokenize{`) do}\space \fi \fi \MintedPython\detokenize{ -c "import sys; import os; import textwrap; from io import open; fname = }% \ifminted@kpsewhich \detokenize{sys.argv[1];}\space \else \detokenize{os.path.expanduser(os.path.expandvars(\"}\minted@argone@esc\detokenize{\"));}\space \fi \detokenize{f = open(fname, \"r\", encoding=\"}\minted@encoding\detokenize{\") if os.path.isfile(fname) else None; t = f.readlines() if f is not None else None; t_opt = t if t is not None else []; f.close() if f is not None else None; tmpfname = os.path.expanduser(os.path.expandvars(\"}\minted@tmpfname@esc.pyg\detokenize{\")); f = open(tmpfname, \"w\", encoding=\"}\minted@encoding\detokenize{\") if t is not None else None; fvstartnum = }\the\numexpr\FancyVerbStartNum\detokenize{; fvstopnum = }\the\numexpr\FancyVerbStopNum\detokenize{; s = max(0, fvstartnum-1); e = max(s, fvstopnum) if fvstopnum > 0 else len(t_opt); [f.write(textwrap.dedent(\"\".join(x))) for x in (t_opt[0:s], t_opt[s:e], t_opt[e:]) if x and t is not None]; f.close() if t is not None else os.remove(tmpfname);"}% \ifminted@kpsewhich \ifwindows \space\@percentchar\detokenize{a}% \else \space\detokenize{`}kpsewhich #1\space\detokenize{||} #1\detokenize{`}% \fi \fi }% \ShellEscape{\minted@autogobblecmd}% } \newcommand{\minted@inputpyg}{% \VerbatimPygments{\PYG}{\PYG}% \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}}% \minted@inputpyg@inline}% {\minted@inputpyg@inline}}% {\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}}% } \ifbool{minted@langlinenos}{}{% \ifbool{minted@inputlanglinenos}{}{% \let\minted@langlinenoson\relax \let\minted@langlinenosoff\relax } } \ifbool{minted@inputlanglinenos}% {\def\minted@inputlanglinenoson{\minted@langlinenoson}% \def\minted@inputlanglinenosoff{\minted@langlinenosoff}}% {\let\minted@inputlanglinenoson\relax \let\minted@inputlanglinenosoff\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} \setminted{tabcolor=black} \setminted{stripnl=false} \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\minted@jobname.pyg\relax \immediate\write\minted@code{\detokenize{#1}}% \immediate\closeout\minted@code} \def\mintinline{% \FVExtraRobustCommand\RobustMintInline\FVExtraUnexpandedReadStarOArgMArgBVArg} \FVExtrapdfstringdefDisableCommands{% \def\RobustMintInline{}} \newrobustcmd{\RobustMintInline}[2][]{% \ifbool{FVExtraRobustCommandExpanded}% {\@ifnextchar\bgroup {\FVExtraReadVArg{\RobustMintInlineProcess{#1}{#2}}}% {\PackageError{minted}% {Inline delimiters must be paired curly braces in this context}% {Use curly braces as delimiters}}}% {\FVExtraReadVArg{\RobustMintInlineProcess{#1}{#2}}}} \def\RobustMintInlineProcess#1#2#3{% \begingroup \setboolean{minted@isinline}{true}% \minted@configlang{#2}% \setkeys{minted@opt@cmd}{#1}% \minted@fvset \RobustMintInlineProcess@i{#3}} \ifthenelse{\boolean{minted@draft}}% {\def\RobustMintInlineProcess@i#1{% \fvset{extra=true}% \Verb{#1}% \endgroup}}% {\def\RobustMintInlineProcess@i#1{% \FVExtraDetokenizeVArg{% \FVExtraRetokenizeVArg{\RobustMintInlineProcess@ii}{\FV@CatCodes}}{#1}} \def\RobustMintInlineProcess@ii#1{% \minted@writecmdcode{#1}% \let\Verbatim\VerbEnv \let\endVerbatim\endVerbEnv \expandafter\minted@pygmentize\expandafter{\minted@lang}% \endgroup}} \def\mint{% \FVExtraRobustCommand\RobustMint\FVExtraUnexpandedReadStarOArgMArgBVArg} \FVExtrapdfstringdefDisableCommands{% \def\RobustMint{}} \newrobustcmd{\RobustMint}[2][]{% \ifbool{FVExtraRobustCommandExpanded}% {\@ifnextchar\bgroup {\FVExtraReadVArg{\RobustMintProcess{#1}{#2}}}% {\PackageError{minted}% {Delimiters must be paired curly braces in this context}% {Use curly braces as delimiters}}}% {\FVExtraReadVArg{\RobustMintProcess{#1}{#2}}}} \def\RobustMintProcess#1#2#3{% \begingroup \minted@configlang{#2}% \setkeys{minted@opt@cmd}{#1}% \minted@fvset \RobustMintProcess@i{#3}} \begingroup \catcode`\^^M=\active% \catcode`\<=1% \catcode`\>=2% \catcode`\{=12% \catcode`\}=12% \catcode`\!=0% \catcode`\\=12% !ifthenelse>% ><#1>>% !gdef!RobustMintProcess@ii#1<% !minted@langlinenoson% !scantokens<% \begin{Verbatim} #1 \end{Verbatim} !noexpand>% !minted@langlinenosoff% !endgroup!@doendpe>>% ><#1>>% !gdef!RobustMintProcess@ii#1<% !minted@writecmdcode<#1>% !minted@langlinenoson% !expandafter!minted@pygmentize!expandafter% !minted@langlinenosoff% !endgroup!@doendpe>>% !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},firstline,lastline]{\minted@jobname.pyg}}% {\end{VerbatimOut}% \minted@langlinenoson \expandafter\minted@pygmentize\expandafter{\minted@lang}% \minted@langlinenosoff}} \ifthenelse{\boolean{minted@draft}}% {\newcommand{\inputminted}[3][]{% \begingroup \minted@configlang{#2}% \setkeys{minted@opt@cmd}{#1}% \minted@fvset \minted@inputlanglinenoson \VerbatimInput{#3}% \minted@inputlanglinenosoff \endgroup}}% {\newcommand{\inputminted}[3][]{% \begingroup \minted@configlang{#2}% \setkeys{minted@opt@cmd}{#1}% \minted@fvset \minted@inputlanglinenoson \minted@pygmentize[#3]{#2}% \minted@inputlanglinenosoff \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][]{% \if\relax\detokenize{#1}\relax \def\minted@shortname{#2}% \else \def\minted@shortname{#1}% \fi \expandafter\newmint@i\expandafter{\minted@shortname}{#2}{#3}} \def\newmint@i#1#2#3{% \expandafter\newcommand\csname#1\endcsname{% \expandafter\FVExtraRobustCommand\csname RobustNewMint#1\endcsname \FVExtraUnexpandedReadStarOArgBVArg}% \FVExtrapdfstringdefDisableCommands{% \expandafter\def\csname RobustNewMint#1\endcsname{}}% \expandafter\newrobustcmd\csname RobustNewMint#1\endcsname{% \FVExtraReadOArgBeforeVArg{\csname RobustNewMint#1@i\endcsname}}% \expandafter\def\csname RobustNewMint#1@i\endcsname##1{% \ifbool{FVExtraRobustCommandExpanded}% {\@ifnextchar\bgroup {\FVExtraReadVArg{\csname RobustNewMint#1@ii\endcsname{##1}}}% {\PackageError{minted}% {Delimiters must be paired curly braces in this context}% {Use curly braces as delimiters}}}% {\FVExtraReadVArg{\csname RobustNewMint#1@ii\endcsname{##1}}}} \expandafter\def\csname RobustNewMint#1@ii\endcsname##1##2{% \RobustMintProcess{#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][]{% \if\relax\detokenize{#1}\relax \def\minted@shortname{#2inline}% \else \def\minted@shortname{#1}% \fi \expandafter\newmintinline@i\expandafter{\minted@shortname}{#2}{#3}} \def\newmintinline@i#1#2#3{% \expandafter\newcommand\csname#1\endcsname{% \expandafter\FVExtraRobustCommand\csname RobustNewMintInline#1\endcsname \FVExtraUnexpandedReadStarOArgBVArg}% \FVExtrapdfstringdefDisableCommands{% \expandafter\def\csname RobustNewMintInline#1\endcsname{}}% \expandafter\newrobustcmd\csname RobustNewMintInline#1\endcsname{% \FVExtraReadOArgBeforeVArg{\csname RobustNewMintInline#1@i\endcsname}}% \expandafter\def\csname RobustNewMintInline#1@i\endcsname##1{% \ifbool{FVExtraRobustCommandExpanded}% {\@ifnextchar\bgroup {\FVExtraReadVArg{\csname RobustNewMintInline#1@ii\endcsname{##1}}}% {\PackageError{minted}% {Inline delimiters must be paired curly braces in this context}% {Use curly braces as delimiters}}}% {\FVExtraReadVArg{\csname RobustNewMintInline#1@ii\endcsname{##1}}}} \expandafter\def\csname RobustNewMintInline#1@ii\endcsname##1##2{% \RobustMintInlineProcess{#3,##1}{#2}{##2}}} \ifthenelse{\boolean{minted@newfloat}}% {\@ifundefined{minted@float@within}% {\DeclareFloatingEnvironment[fileext=lol,placement=tbp]{listing}}% {\def\minted@tmp#1{% \DeclareFloatingEnvironment[fileext=lol,placement=tbp, within=#1]{listing}}% \expandafter\minted@tmp\expandafter{\minted@float@within}}}% {\@ifundefined{minted@float@within}% {\newfloat{listing}{tbp}{lol}}% {\newfloat{listing}{tbp}{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}}% {}% {% \ifthenelse{\boolean{minted@frozencache}}{}{% \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}% }% } \AtEndPreamble{% \ifthenelse{\boolean{minted@draft}}% {}% {% \ifthenelse{\boolean{minted@frozencache}}{}{% \TestAppExists{\MintedPygmentize}% \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}% }% } \AfterEndDocument{% \ifthenelse{\boolean{minted@draft}}% {}% {\ifthenelse{\boolean{minted@frozencache}}% {} {\ifx\XeTeXinterchartoks\minted@undefined \else \DeleteFile[\minted@outputdir]{\minted@jobname.mintedcmd}% \DeleteFile[\minted@outputdir]{\minted@jobname.mintedmd5}% \fi \DeleteFile[\minted@outputdir]{\minted@jobname.pyg}% \DeleteFile[\minted@outputdir]{\minted@jobname.out.pyg}% }% }% } \endinput %% %% End of file `minted.sty'.