From 1d053b95dc2f57b9d974520d41f07d72b9a332e5 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 2 Feb 2015 23:29:53 +0000 Subject: minted (2feb15) git-svn-id: svn://tug.org/texlive/trunk@36197 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/minted/minted.sty | 1330 ++++++++++++++++++++---- Master/texmf-dist/tex/latex/minted/minted1.sty | 261 +++++ 2 files changed, 1417 insertions(+), 174 deletions(-) create mode 100644 Master/texmf-dist/tex/latex/minted/minted1.sty (limited to 'Master/texmf-dist/tex/latex/minted') diff --git a/Master/texmf-dist/tex/latex/minted/minted.sty b/Master/texmf-dist/tex/latex/minted/minted.sty index 0e0585cfdd2..7fef35aade6 100644 --- a/Master/texmf-dist/tex/latex/minted/minted.sty +++ b/Master/texmf-dist/tex/latex/minted/minted.sty @@ -5,6 +5,7 @@ %% 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 @@ -20,220 +21,1201 @@ %% %% This work has the LPPL maintenance status `maintained'. %% -%% The Current Maintainer of this work is Konrad Rudolph. +%% 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}[2011/09/17 v1.7 Yet another Pygments shim for LaTeX] +\ProvidesPackage{minted} + [2015/01/31 v2.0 Yet another Pygments shim for LaTeX] \RequirePackage{keyval} +\RequirePackage{kvoptions} \RequirePackage{fancyvrb} -\RequirePackage{xcolor} \RequirePackage{float} \RequirePackage{ifthen} \RequirePackage{calc} \RequirePackage{ifplatform} -\DeclareOption{chapter}{\def\minted@float@within{chapter}} -\DeclareOption{section}{\def\minted@float@within{section}} -\ProcessOptions\relax +\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 - \providecommand\DeleteFile[1]{\immediate\write18{del #1}} + \newcommand{\ProvideDirectory}[1]{% + \StrSubstitute{#1}{/}{\@backslashchar}[\minted@windir] + \immediate\write18{if not exist "\minted@windir" mkdir "\minted@windir"}} \else - \providecommand\DeleteFile[1]{\immediate\write18{rm #1}} + \newcommand{\ProvideDirectory}[1]{% + \immediate\write18{mkdir -p "#1"}} \fi \newboolean{AppExists} -\newcommand\TestAppExists[1]{ +\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 >\jobname.aex} %$ - \newread\@appexistsfile - \immediate\openin\@appexistsfile\jobname.aex + do set >"\jobname.aex" >"\jobname.aex"} + %$ <- balance syntax highlighting + \immediate\openin\minted@appexistsfile\jobname.aex \expandafter\def\expandafter\@tmp@cr\expandafter{\the\endlinechar} \endlinechar=-1\relax - \readline\@appexistsfile to \@apppathifexists + \readline\minted@appexistsfile to \minted@apppathifexists \endlinechar=\@tmp@cr - \ifthenelse{\equal{\@apppathifexists}{}} + \ifthenelse{\equal{\minted@apppathifexists}{}} {\AppExistsfalse} {\AppExiststrue} - \immediate\closein\@appexistsfile + \immediate\closein\minted@appexistsfile \DeleteFile{\jobname.aex} -\immediate\typeout{file deleted} \else - \immediate\write18{which #1 && touch \jobname.aex} + \immediate\write18{which "#1" && touch "\jobname.aex"} \IfFileExists{\jobname.aex} - {\AppExiststrue - \DeleteFile{\jobname.aex}} - {\AppExistsfalse} - \fi} -\newcommand\minted@resetoptions{} -\newcommand\minted@defopt[1]{ - \expandafter\def\expandafter\minted@resetoptions\expandafter{% - \minted@resetoptions - \@namedef{minted@opt@#1}{}}} -\newcommand\minted@opt[1]{ - \expandafter\detokenize% - \expandafter\expandafter\expandafter{\csname minted@opt@#1\endcsname}} -\newcommand\minted@define@opt[3][]{ - \minted@defopt{#2} - \ifthenelse{\equal{#1}{}}{ - \define@key{minted@opt}{#2}{\@namedef{minted@opt@#2}{#3}}} - {\define@key{minted@opt}{#2}[#1]{\@namedef{minted@opt@#2}{#3}}}} -\newcommand\minted@define@switch[3][]{ - \minted@defopt{#2} - \define@booleankey{minted@opt}{#2} - {\@namedef{minted@opt@#2}{#3}} - {\@namedef{minted@opt@#2}{#1}}} -\minted@defopt{extra} -\newcommand\minted@define@extra[1]{ - \define@key{minted@opt}{#1}{ - \expandafter\def\expandafter\minted@opt@extra\expandafter{% - \minted@opt@extra,#1=##1}}} -\newcommand\minted@define@extra@switch[1]{ - \define@booleankey{minted@opt}{#1} - {\expandafter\def\expandafter\minted@opt@extra\expandafter{% - \minted@opt@extra,#1}} - {\expandafter\def\expandafter\minted@opt@extra\expandafter{% - \minted@opt@extra,#1=false}}} -\minted@define@switch{texcl}{-P texcomments} -\minted@define@switch{mathescape}{-P mathescape} -\minted@define@switch{linenos}{-P linenos} -\minted@define@switch{startinline}{-P startinline} -\minted@define@switch[-P funcnamehighlighting=False]% - {funcnamehighlighting}{-P funcnamehighlighting} -\minted@define@opt{gobble}{-F gobble:n=#1} -\minted@define@opt{bgcolor}{#1} -\minted@define@extra{frame} -\minted@define@extra{framesep} -\minted@define@extra{framerule} -\minted@define@extra{rulecolor} -\minted@define@extra{numbersep} -\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} + {\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]{ - \def\minted@bgcol{#1} - \noindent - \begin{lrbox}{\minted@bgbox} - \begin{minipage}{\linewidth-2\fboxsep}} + %\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}}} + \end{lrbox}% + \colorbox{\minted@bgcol}{\usebox{\minted@bgbox}}} \newwrite\minted@code -\newcommand\minted@savecode[1]{ - \immediate\openout\minted@code\jobname.pyg - \immediate\write\minted@code{#1} +\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@pygmentize[2][\jobname.pyg]{ - \def\minted@cmd{pygmentize -l #2 -f latex -F tokenmerge - \minted@opt{gobble} \minted@opt{texcl} \minted@opt{mathescape} - \minted@opt{startinline} \minted@opt{funcnamehighlighting} - \minted@opt{linenos} -P "verboptions=\minted@opt{extra}" - -o \jobname.out.pyg #1} - \immediate\write18{\minted@cmd} - % For debugging, uncomment: - %\immediate\typeout{\minted@cmd} - \ifthenelse{\equal{\minted@opt@bgcolor}{}} - {} - {\begin{minted@colorbg}{\minted@opt@bgcolor}} - \input{\jobname.out.pyg} - \ifthenelse{\equal{\minted@opt@bgcolor}{}} - {} - {\end{minted@colorbg}} - \DeleteFile{\jobname.out.pyg}} -\newcommand\minted@usedefaultstyle{\usemintedstyle{default}} -\newcommand\usemintedstyle[1]{ - \renewcommand\minted@usedefaultstyle{} - \immediate\write18{pygmentize -S #1 -f latex > \jobname.pyg} - \input{\jobname.pyg}} -\newcommand\mint[3][]{ - \DefineShortVerb{#3} - \minted@resetoptions - \setkeys{minted@opt}{#1} - \SaveVerb[aftersave={ - \UndefineShortVerb{#3} - \minted@savecode{\FV@SV@minted@verb} - \minted@pygmentize{#2} - \DeleteFile{\jobname.pyg}}]{minted@verb}#3} -\newcommand\minted@proglang[1]{} -\newenvironment{minted}[2][] - {\VerbatimEnvironment - \renewcommand{\minted@proglang}[1]{#2} - \minted@resetoptions - \setkeys{minted@opt}{#1} - \begin{VerbatimOut}[codes={\catcode`\^^I=12}]{\jobname.pyg}}% - {\end{VerbatimOut} - \minted@pygmentize{\minted@proglang{}} - \DeleteFile{\jobname.pyg}} -\newcommand\inputminted[3][]{ - \minted@resetoptions - \setkeys{minted@opt}{#1} - \minted@pygmentize[#3]{#2}} -\newcommand\newminted[3][]{ +\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}} + {\def\minted@envname{#2code}} + {\def\minted@envname{#1}} \newenvironment{\minted@envname} - {\VerbatimEnvironment\begin{minted}[#3]{#2}} - {\end{minted}} + {\VerbatimEnvironment + \begin{minted}[#3]{#2}} + {\end{minted}} \newenvironment{\minted@envname *}[1] - {\VerbatimEnvironment\begin{minted}[#3,##1]{#2}} - {\end{minted}}} -\newcommand\newmint[3][]{ + {\VerbatimEnvironment\begin{minted}[#3,##1]{#2}} + {\end{minted}}} +\newcommand{\newmint}[3][]{ \ifthenelse{\equal{#1}{}} - {\def\minted@shortname{#2}} - {\def\minted@shortname{#1}} + {\def\minted@shortname{#2}} + {\def\minted@shortname{#1}} \expandafter\newcommand\csname\minted@shortname\endcsname[2][]{ \mint[#3,##1]{#2}##2}} -\newcommand\newmintedfile[3][]{ +\newcommand{\newmintedfile}[3][]{ \ifthenelse{\equal{#1}{}} - {\def\minted@shortname{#2file}} - {\def\minted@shortname{#1}} + {\def\minted@shortname{#2file}} + {\def\minted@shortname{#1}} \expandafter\newcommand\csname\minted@shortname\endcsname[2][]{ \inputminted[#3,##1]{#2}{##2}}} -\@ifundefined{minted@float@within} - {\newfloat{listing}{h}{lol}} - {\newfloat{listing}{h}{lol}[\minted@float@within]} -\newcommand\listingscaption{Listing} +\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}} -\AtBeginDocument{ - \minted@usedefaultstyle} -\AtEndOfPackage{ - \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} +\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'. diff --git a/Master/texmf-dist/tex/latex/minted/minted1.sty b/Master/texmf-dist/tex/latex/minted/minted1.sty new file mode 100644 index 00000000000..a8aaf50ad98 --- /dev/null +++ b/Master/texmf-dist/tex/latex/minted/minted1.sty @@ -0,0 +1,261 @@ +%% +%% This is file `minted1.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% minted.dtx (with options: `packageone') +%% 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} +%%%% Begin minted1 modification +%%\ProvidesPackage{minted}[2011/09/17 v1.7 Yet another Pygments shim for LaTeX] +\ProvidesPackage{minted1}[2015/01/31 v1.0 minted 1.7 compatibility package] +%%%% End minted1 modification +\RequirePackage{keyval} +\RequirePackage{fancyvrb} +\RequirePackage{xcolor} +\RequirePackage{float} +\RequirePackage{ifthen} +%%%% Begin minted1 modification +\newboolean{mintedone@mintedloaded} +\@ifpackageloaded{minted}% + {\setboolean{mintedone@mintedloaded}{true}% + \PackageError{minted1}{The package "minted1" may not be loaded after + ^^J"minted" has already been loaded--load "minted1" only for "minted" + ^^Jversion 1.7 compatibility}% + {Load "minted1" only when "minted" version 1.7 compatibility is required}}% + {} +\ifmintedone@mintedloaded\else +\@namedef{ver@minted.sty}{2011/09/17 v1.7 Yet another Pygments shim for LaTeX} +\expandafter\let\expandafter\minted@tmp\csname opt@minted1.sty\endcsname +\expandafter\let\csname opt@minted.sty\endcsname\minted@tmp +\let\minted@tmp\relax +%%%% End minted1 modification +\RequirePackage{calc} +\RequirePackage{ifplatform} +\DeclareOption{chapter}{\def\minted@float@within{chapter}} +\DeclareOption{section}{\def\minted@float@within{section}} +\ProcessOptions\relax +\ifwindows + \providecommand\DeleteFile[1]{\immediate\write18{del #1}} +\else + \providecommand\DeleteFile[1]{\immediate\write18{rm #1}} +\fi +\newboolean{AppExists} +\newcommand\TestAppExists[1]{ + \ifwindows + \DeleteFile{\jobname.aex} + \immediate\write18{for \string^\@percentchar i in (#1.exe #1.bat #1.cmd) + do set >\jobname.aex >\jobname.aex} %$ + \newread\@appexistsfile + \immediate\openin\@appexistsfile\jobname.aex + \expandafter\def\expandafter\@tmp@cr\expandafter{\the\endlinechar} + \endlinechar=-1\relax + \readline\@appexistsfile to \@apppathifexists + \endlinechar=\@tmp@cr + \ifthenelse{\equal{\@apppathifexists}{}} + {\AppExistsfalse} + {\AppExiststrue} + \immediate\closein\@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@resetoptions{} +\newcommand\minted@defopt[1]{ + \expandafter\def\expandafter\minted@resetoptions\expandafter{% + \minted@resetoptions + \@namedef{minted@opt@#1}{}}} +\newcommand\minted@opt[1]{ + \expandafter\detokenize% + \expandafter\expandafter\expandafter{\csname minted@opt@#1\endcsname}} +\newcommand\minted@define@opt[3][]{ + \minted@defopt{#2} + \ifthenelse{\equal{#1}{}}{ + \define@key{minted@opt}{#2}{\@namedef{minted@opt@#2}{#3}}} + {\define@key{minted@opt}{#2}[#1]{\@namedef{minted@opt@#2}{#3}}}} +\newcommand\minted@define@switch[3][]{ + \minted@defopt{#2} + \define@booleankey{minted@opt}{#2} + {\@namedef{minted@opt@#2}{#3}} + {\@namedef{minted@opt@#2}{#1}}} +\minted@defopt{extra} +\newcommand\minted@define@extra[1]{ + \define@key{minted@opt}{#1}{ + \expandafter\def\expandafter\minted@opt@extra\expandafter{% + \minted@opt@extra,#1=##1}}} +\newcommand\minted@define@extra@switch[1]{ + \define@booleankey{minted@opt}{#1} + {\expandafter\def\expandafter\minted@opt@extra\expandafter{% + \minted@opt@extra,#1}} + {\expandafter\def\expandafter\minted@opt@extra\expandafter{% + \minted@opt@extra,#1=false}}} +\minted@define@switch{texcl}{-P texcomments} +\minted@define@switch{mathescape}{-P mathescape} +\minted@define@switch{linenos}{-P linenos} +\minted@define@switch{startinline}{-P startinline} +\minted@define@switch[-P funcnamehighlighting=False]% + {funcnamehighlighting}{-P funcnamehighlighting} +\minted@define@opt{gobble}{-F gobble:n=#1} +\minted@define@opt{bgcolor}{#1} +\minted@define@extra{frame} +\minted@define@extra{framesep} +\minted@define@extra{framerule} +\minted@define@extra{rulecolor} +\minted@define@extra{numbersep} +\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} +\newsavebox{\minted@bgbox} +\newenvironment{minted@colorbg}[1]{ + \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 + \immediate\write\minted@code{#1} + \immediate\closeout\minted@code} +\newcommand\minted@pygmentize[2][\jobname.pyg]{ + \def\minted@cmd{pygmentize -l #2 -f latex -F tokenmerge + \minted@opt{gobble} \minted@opt{texcl} \minted@opt{mathescape} + \minted@opt{startinline} \minted@opt{funcnamehighlighting} + \minted@opt{linenos} -P "verboptions=\minted@opt{extra}" + -o \jobname.out.pyg #1} + \immediate\write18{\minted@cmd} + % For debugging, uncomment: + %\immediate\typeout{\minted@cmd} + \ifthenelse{\equal{\minted@opt@bgcolor}{}} + {} + {\begin{minted@colorbg}{\minted@opt@bgcolor}} + \input{\jobname.out.pyg} + \ifthenelse{\equal{\minted@opt@bgcolor}{}} + {} + {\end{minted@colorbg}} + \DeleteFile{\jobname.out.pyg}} +\newcommand\minted@usedefaultstyle{\usemintedstyle{default}} +\newcommand\usemintedstyle[1]{ + \renewcommand\minted@usedefaultstyle{} + \immediate\write18{pygmentize -S #1 -f latex > \jobname.pyg} + \input{\jobname.pyg}} +\newcommand\mint[3][]{ + \DefineShortVerb{#3} + \minted@resetoptions + \setkeys{minted@opt}{#1} + \SaveVerb[aftersave={ + \UndefineShortVerb{#3} + \minted@savecode{\FV@SV@minted@verb} + \minted@pygmentize{#2} + \DeleteFile{\jobname.pyg}}]{minted@verb}#3} +\newcommand\minted@proglang[1]{} +\newenvironment{minted}[2][] + {\VerbatimEnvironment + \renewcommand{\minted@proglang}[1]{#2} + \minted@resetoptions + \setkeys{minted@opt}{#1} + \begin{VerbatimOut}[codes={\catcode`\^^I=12}]{\jobname.pyg}}% + {\end{VerbatimOut} + \minted@pygmentize{\minted@proglang{}} + \DeleteFile{\jobname.pyg}} +\newcommand\inputminted[3][]{ + \minted@resetoptions + \setkeys{minted@opt}{#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}}} +\@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}} +\AtBeginDocument{ + \minted@usedefaultstyle} +\AtEndOfPackage{ + \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} +%%%% Begin minted1 modification +\fi +%%%% End minted1 modification +\endinput +%% +%% End of file `minted1.sty'. -- cgit v1.2.3