123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711 |
- %%
- %% This is file `minted.sty',
- %% generated with the docstrip utility.
- %%
- %% The original source files were:
- %%
- %% minted.dtx (with options: `package')
- %% 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 Konrad Rudolph.
- %%
- %% This work consists of the files minted.dtx and minted.ins
- %% and the derived file minted.sty.
- \NeedsTeXFormat{LaTeX2e}
- \ProvidesPackage{minted}[2013/12/21 v2.0-alpha3 ]
- \RequirePackage{keyval}
- \RequirePackage{kvoptions}
- \RequirePackage{fancyvrb}
- \RequirePackage{float}
- \RequirePackage{ifthen}
- \RequirePackage{calc}
- \RequirePackage{ifplatform}
- \RequirePackage{pdftexcmds}
- \RequirePackage{etoolbox}
- \RequirePackage{xstring}
- \AtBeginDocument{\@ifpackageloaded{color}{}{\RequirePackage{xcolor}}}
- \DeclareVoidOption{chapter}{\def\minted@float@within{chapter}}
- \DeclareVoidOption{section}{\def\minted@float@within{section}}
- \newboolean{minted@cache}
- \DeclareVoidOption{cache}{%
- \minted@cachetrue
- \AtEndOfPackage{\ProvideDirectory{\minted@outputdir\minted@cachedir}}%
- }
- \StrSubstitute{\jobname}{ }{_}[\minted@jobname]
- \StrSubstitute{\minted@jobname}{"}{}[\minted@jobname]
- \StrSubstitute{\minted@jobname}{*}{-}[\minted@jobname]
- \newcommand{\minted@cachedir}{.minted-\minted@jobname}
- \let\minted@cachedir@windows\minted@cachedir
- \define@key{minted}{cachedir}{%
- \@namedef{minted@cachedir}{#1}%
- \StrSubstitute{\minted@cachedir}{/}{\@backslashchar}[\minted@cachedir@windows]}
- \let\minted@outputdir\@empty
- \let\minted@outputdir@windows\@empty
- \define@key{minted}{outputdir}{%
- \@namedef{minted@outputdir}{#1/}%
- \StrSubstitute{\minted@outputdir}{/}%
- {\@backslashchar}[\minted@outputdir@windows]}
- \newboolean{minted@langlinenos}
- \DeclareVoidOption{langlinenos}{\minted@langlinenostrue}
- \ProcessKeyvalOptions*
- \newcommand{\minted@infile}{\jobname.out.pyg}
- \newcommand{\minted@cachefiles}{}
- \newcommand{\minted@addcachefile}[1]{%
- \expandafter\gdef\expandafter\minted@cachefiles\expandafter{%
- \minted@cachefiles,#1}%
- \expandafter\gdef\csname minted@current@#1\endcsname{}%
- }
- \newcommand{\minted@savecachefiles}{%
- \immediate\write\@mainaux{%
- \string\gdef\string\minted@oldcachefiles\string{%
- \minted@cachefiles\string}}%
- }
- \newcommand{\minted@cleancache}{%
- \ifthenelse{\boolean{minted@cache}}{%
- \ifcsname minted@oldcachefiles\endcsname
- \renewcommand{\do}[1]{%
- \ifthenelse{\equal{##1}{}}{}{%
- \ifcsname minted@current@##1\endcsname\else
- \DeleteFile[\minted@outputdir\minted@cachedir]{##1.pygtex}%
- \fi
- }%
- }%
- \expandafter\docsvlist\expandafter{\minted@oldcachefiles}%
- \else
- \fi
- }{}%
- }
- \ifthenelse{\boolean{minted@cache}}%
- {\AtEndDocument{%
- \minted@savecachefiles
- \minted@cleancache}}%
- {}%
- \ifwindows
- \providecommand{\DeleteFile}[2][]{%
- \ifthenelse{\equal{#1}{}}%
- {\IfFileExists{#2}{\immediate\write18{del "#2"}}{}}%
- {\IfFileExists{#1/#2}{%
- \StrSubstitute{#1}{/}{\@backslashchar}[\minted@windir]
- \immediate\write18{del "\minted@windir\@backslashchar #2"}}{}}}
- \else
- \providecommand{\DeleteFile}[2][]{%
- \ifthenelse{\equal{#1}{}}%
- {\IfFileExists{#2}{\immediate\write18{rm "#2"}}{}}%
- {\IfFileExists{#1/#2}{\immediate\write18{rm "#1/#2"}}{}}}
- \fi
- \ifwindows
- \newcommand{\ProvideDirectory}[1]{%
- \StrSubstitute{#1}{/}{\@backslashchar}[\minted@windir]
- \immediate\write18{if not exist "\minted@windir" mkdir "\minted@windir"}}
- \else
- \newcommand{\ProvideDirectory}[1]{%
- \immediate\write18{mkdir -p "#1"}}
- \fi
- \newboolean{AppExists}
- \newread\minted@appexistsfile
- \newcommand{\TestAppExists}[1]{
- \ifwindows
- \DeleteFile{\jobname.aex}
- \immediate\write18{for \string^\@percentchar i in (#1.exe #1.bat #1.cmd)
- do set >\jobname.aex <nul: /p
- x=\string^\@percentchar \string~$PATH:i>>\jobname.aex}
- %$ <- balance syntax highlighting
- \immediate\openin\minted@appexistsfile\jobname.aex
- \expandafter\def\expandafter\@tmp@cr\expandafter{\the\endlinechar}
- \endlinechar=-1\relax
- \readline\minted@appexistsfile to \minted@apppathifexists
- \endlinechar=\@tmp@cr
- \ifthenelse{\equal{\minted@apppathifexists}{}}
- {\AppExistsfalse}
- {\AppExiststrue}
- \immediate\closein\minted@appexistsfile
- \DeleteFile{\jobname.aex}
- \immediate\typeout{file deleted}
- \else
- \immediate\write18{which #1 && touch \jobname.aex}
- \IfFileExists{\jobname.aex}
- {\AppExiststrue
- \DeleteFile{\jobname.aex}}
- {\AppExistsfalse}
- \fi
- }
- \newcommand{\minted@optg}{}
- \let\minted@lang\@empty
- \newcommand{\minted@optlang}{}
- \newcommand{\minted@optcmd}{}
- \newcommand{\minted@checklang}{%
- \ifcsname minted@optlang\minted@lang\endcsname\else
- \expandafter\def\csname minted@optlang\minted@lang\endcsname{}%
- \fi
- \ifcsname minted@optlang\minted@lang @extra\endcsname\else
- \expandafter\def\csname minted@optlang\minted@lang @extra\endcsname{}%
- \fi
- }
- \newcommand{\minted@resetoptcmd}{%
- \@namedef{minted@optcmd@extra}{}%
- \let\minted@optcmd@autogobble\relax}
- \newcommand{\minted@getoptg}[1]{%
- \expandafter\detokenize%
- \expandafter\expandafter\expandafter{\csname minted@optg@#1\endcsname}}
- \newcommand{\minted@getoptlang}[1]{%
- \expandafter\detokenize\expandafter\expandafter\expandafter{%
- \csname minted@optlang\minted@lang @#1\endcsname}}
- \newcommand{\minted@getoptcmd}[1]{%
- \expandafter\detokenize%
- \expandafter\expandafter\expandafter{\csname minted@optcmd@#1\endcsname}}
- \newcommand{\minted@regoptg}[1]{%
- \ifcsname minted@optg@#1@reg\endcsname\else
- \expandafter\let\csname minted@optg@#1@reg\endcsname\@empty
- \expandafter\def\expandafter\minted@optg\expandafter{%
- \minted@optg\space\minted@getoptg{#1}}%
- \fi
- }
- \newcommand{\minted@regoptlang}[1]{%
- \ifcsname minted@optlang\minted@lang @#1@reg\endcsname\else
- \ifcsname minted@optlang\minted@lang\endcsname\else
- \expandafter\def\csname minted@optlang\minted@lang\endcsname{}%
- \fi
- \expandafter\let\csname minted@optlang\minted@lang @#1@reg\endcsname\@empty
- \expandafter\let\expandafter\minted@optlang%
- \csname minted@optlang\minted@lang\endcsname
- \expandafter\def\expandafter\minted@optlang\expandafter{%
- \minted@optlang\space\minted@getoptlang{#1}}%
- \expandafter\let\csname minted@optlang\minted@lang\endcsname\minted@optlang
- \let\minted@optlang\@empty
- \fi
- }
- \newcommand{\minted@regoptcmd}[1]{%
- \ifcsname minted@optcmd@#1@reg\endcsname\else
- \expandafter\let\csname minted@optcmd@#1@reg\endcsname\@empty
- \expandafter\def\expandafter\minted@optcmd\expandafter{%
- \minted@optcmd\space\minted@getoptcmd{#1}}%
- \expandafter\def\expandafter\minted@resetoptcmd\expandafter{%
- \minted@resetoptcmd
- \@namedef{minted@optcmd@#1}{}}
- \fi
- }
- \newcommand{\minted@define@opt}[4][]{%
- \ifthenelse{\equal{#1}{}}%
- {\define@key{minted@optg}{#2}{\@namedef{minted@optg@#2}{#3=#4}%
- \@namedef{minted@optg@#2@val}{#4}%
- \minted@regoptg{#2}}%
- \define@key{minted@optlang}{#2}{%
- \@namedef{minted@optlang\minted@lang @#2}{#3=#4}%
- \@namedef{minted@optlang\minted@lang @#2@val}{#4}%
- \minted@regoptlang{#2}}%
- \define@key{minted@optcmd}{#2}{\@namedef{minted@optcmd@#2}{#3=#4}%
- \@namedef{minted@optcmd@#2@val}{#4}%
- \minted@regoptcmd{#2}}}%
- {\define@key{minted@optg}{#2}[#1]{\@namedef{minted@optg@#2}{#3=#4}%
- \@namedef{minted@optg@#2@val}{#4}%
- \minted@regoptg{#2}}%
- \define@key{minted@optlang}{#2}[#1]{%
- \@namedef{minted@optlang\minted@lang @#2}{#3=#4}%
- \@namedef{minted@optlang\minted@lang @#2@val}{#4}%
- \minted@regoptlang{#2}}%
- \define@key{minted@optcmd}{#2}[#1]{\@namedef{minted@optcmd@#2}{#3=#4}%
- \@namedef{minted@optcmd@#2@val}{#4}%
- \minted@regoptcmd{#2}}}%
- }
- \newcommand{\minted@define@optstyle}{%
- \define@key{minted@optg}{style}{%
- \@namedef{minted@optg@style}{-P style=##1 -P commandprefix=PYG##1}%
- \minted@regoptg{style}\minted@regstyle{##1}}%
- \define@key{minted@optlang}{style}{%
- \@namedef{minted@optlang\minted@lang @style}%
- {-P style=##1 -P commandprefix=PYG##1}%
- \minted@regoptlang{style}\minted@regstyle{##1}}%
- \define@key{minted@optcmd}{style}{%
- \@namedef{minted@optcmd@style}{-P style=##1 -P commandprefix=PYG##1}%
- \minted@regoptcmd{style}\minted@regstyle{##1}}%
- }
- \newcommand{\minted@regstyle}[1]{%
- \ifcsname minted@stylereg@#1\endcsname\else
- \expandafter\global\expandafter%
- \let\csname minted@stylereg@#1\endcsname\@empty
- \ifthenelse{\boolean{minted@cache}}%
- {\IfFileExists{\minted@outputdir\minted@cachedir/#1.pygstyle}{}{%
- \ifwindows
- \immediate\write18{\MintedPygmentize\space -S #1 -f latex
- -P commandprefix=PYG#1
- > "\minted@outputdir@windows\minted@cachedir@windows\@backslashchar#1.pygstyle"}%
- \else
- \immediate\write18{\MintedPygmentize\space -S #1 -f latex
- -P commandprefix=PYG#1
- > "\minted@outputdir\minted@cachedir/#1.pygstyle"}%
- \fi
- }%
- \begingroup
- \let\def\gdef
- \endlinechar=-1\relax
- \input{\minted@outputdir\minted@cachedir/#1.pygstyle}%
- \endgroup}%
- {\ifwindows
- \immediate\write18{\MintedPygmentize\space -S #1 -f latex
- -P commandprefix=PYG#1 > "\minted@outputdir@windows\jobname.out.pyg"}%
- \else
- \immediate\write18{\MintedPygmentize\space -S #1 -f latex
- -P commandprefix=PYG#1 > "\minted@outputdir\jobname.out.pyg"}%
- \fi
- \begingroup
- \let\def\gdef
- \endlinechar=-1\relax
- \input{\minted@outputdir\jobname.out.pyg}%
- \endgroup}%
- \fi
- }
- \newcommand{\minted@define@switch}[3][]{
- \define@booleankey{minted@optg}{#2}
- {\@namedef{minted@optg@#2}{#3}\minted@regoptg{#2}}
- {\@namedef{minted@optg@#2}{#1}\minted@regoptg{#2}}
- \define@booleankey{minted@optlang}{#2}
- {\@namedef{minted@optlang\minted@lang @#2}{#3}\minted@regoptlang{#2}}
- {\@namedef{minted@optlang\minted@lang @#2}{#1}\minted@regoptlang{#2}}
- \define@booleankey{minted@optcmd}{#2}
- {\@namedef{minted@optcmd@#2}{#3}\minted@regoptcmd{#2}}
- {\@namedef{minted@optcmd@#2}{#1}\minted@regoptcmd{#2}}
- }
- \newcommand{\minted@define@extra}[1]{
- \define@key{minted@optg}{#1}{%
- \expandafter\def\expandafter\minted@optg@extra\expandafter{%
- \minted@optg@extra,#1=##1}}
- \@namedef{minted@optg@extra}{}
- \define@key{minted@optlang}{#1}{%
- \ifcsname minted@optlang\minted@lang @extra\endcsname\else
- \expandafter\def\csname minted@optlang\minted@lang @extra\endcsname{}%
- \fi
- \expandafter\let\expandafter\minted@optlang@extra%
- \csname minted@optlang\minted@lang @extra \endcsname
- \expandafter\def\expandafter\minted@optlang@extra\expandafter{%
- \minted@optlang@extra,#1=##1}%
- \expandafter\let\csname minted@optlang\minted@lang @extra\endcsname%
- \minted@optlang@extra
- \let\minted@optlang@extra\@empty}%
- \@namedef{minted@optlang@extra}{}
- \define@key{minted@optcmd}{#1}{%
- \expandafter\def\expandafter\minted@optcmd@extra\expandafter{%
- \minted@optcmd@extra,#1=##1}}
- \@namedef{minted@optcmd@extra}{}
- }
- \newcommand{\minted@define@extra@switch}[1]{
- \define@booleankey{minted@optg}{#1}
- {\expandafter\def\expandafter\minted@optg@extra\expandafter{%
- \minted@optg@extra,#1}}
- {\expandafter\def\expandafter\minted@optg@extra\expandafter{%
- \minted@optg@extra,#1=false}}
- \define@booleankey{minted@optlang}{#1}
- {%
- \ifcsname minted@optlang\minted@lang @extra\endcsname\else
- \expandafter\def\csname minted@optlang\minted@lang @extra\endcsname{}%
- \fi
- \expandafter\let\expandafter\minted@optlang@extra%
- \csname minted@optlang\minted@lang @extra\endcsname
- \expandafter\def\expandafter\minted@optlang@extra\expandafter{%
- \minted@optlang@extra,#1}%
- \expandafter\let\csname minted@optlang\minted@lang @extra\endcsname%
- \minted@optlang@extra
- \let\minted@optlang@extra\@empty}
- {%
- \ifcsname minted@optlang\minted@lang @extra\endcsname\else
- \expandafter\def\csname minted@optlang\minted@lang @extra\endcsname{}%
- \fi
- \expandafter\let\expandafter\minted@optlang@extra%
- \csname minted@optlang\minted@lang @extra\endcsname
- \expandafter\def\expandafter\minted@optlang@extra\expandafter{%
- \minted@optlang@extra,#1=false}%
- \expandafter\let\csname minted@optlang\minted@lang @extra\endcsname%
- \minted@optlang@extra
- \let\minted@optlang@extra\@empty}
- \define@booleankey{minted@optcmd}{#1}
- {\expandafter\def\expandafter\minted@optcmd@extra\expandafter{%
- \minted@optcmd@extra,#1}}
- {\expandafter\def\expandafter\minted@optcmd@extra\expandafter{%
- \minted@optcmd@extra,#1=false}}
- }
- \minted@define@opt{encoding}{-P encoding}{#1}
- \minted@define@opt{outencoding}{-P outencoding}{#1}
- \minted@define@opt{stripnl}{-P stripnl}{#1}
- \minted@define@switch{python3}{-P python3=True}
- \minted@define@switch[-P funcnamehighlighting=False]%
- {funcnamehighlighting}{-P funcnamehighlighting}
- \minted@define@switch{startinline}{-P startinline}
- \minted@define@opt{gobble}{-F gobble:n}{#1}
- \minted@define@opt{codetagify}{-F codetagify:codetags}{#1}
- \minted@define@opt{keywordcase}{-F keywordcase:case}{#1}
- \minted@define@switch{texcl}{-P texcomments}
- \minted@define@switch{texcomments}{-P texcomments}
- \minted@define@switch{mathescape}{-P mathescape}
- \minted@define@switch{linenos}{-P linenos}
- \minted@define@optstyle
- \minted@define@extra{frame}
- \minted@define@extra{framesep}
- \minted@define@extra{framerule}
- \minted@define@extra{rulecolor}
- \minted@define@extra{numbersep}
- \minted@define@extra{numbers}
- \minted@define@extra{firstnumber}
- \minted@define@extra{stepnumber}
- \minted@define@extra{firstline}
- \minted@define@extra{lastline}
- \minted@define@extra{baselinestretch}
- \minted@define@extra{xleftmargin}
- \minted@define@extra{xrightmargin}
- \minted@define@extra{fillcolor}
- \minted@define@extra{tabsize}
- \minted@define@extra{fontfamily}
- \minted@define@extra{fontsize}
- \minted@define@extra{fontshape}
- \minted@define@extra{fontseries}
- \minted@define@extra{formatcom}
- \minted@define@extra{label}
- \minted@define@extra@switch{numberblanklines}
- \minted@define@extra@switch{showspaces}
- \minted@define@extra@switch{resetmargins}
- \minted@define@extra@switch{samepage}
- \minted@define@extra@switch{showtabs}
- \minted@define@extra@switch{obeytabs}
- \let\minted@optcmd@bgcolor\@empty
- \define@key{minted@optcmd}{bgcolor}{\@namedef{minted@optcmd@bgcolor}{#1}}
- \newcommand{\minted@encoding}{%
- \ifcsname minted@optcmd@encoding@val\endcsname
- \csname minted@optcmd@encoding@val\endcsname
- \else
- \ifcsname minted@optlang\minted@lang @encoding@val\endcsname
- \csname minted@optlang\minted@lang @encoding@val\endcsname
- \else
- \ifcsname minted@optg@encoding@val\endcsname
- \csname minted@optg@encoding@val\endcsname
- \else
- UTF8%
- \fi
- \fi
- \fi
- }
- \define@booleankey{minted@optg}{autogobble}
- {\expandafter\let\csname minted@optg@autogobble\endcsname\@empty}
- {\expandafter\let\csname minted@optg@autogobble\endcsname\relax}
- \define@booleankey{minted@optlang}{autogobble}
- {\expandafter\let\csname minted@optlang\minted@lang @autogobble\endcsname\@empty}
- {\expandafter\let\csname minted@optlang\minted@lang @autogobble\endcsname\relax}
- \define@booleankey{minted@optcmd}{autogobble}
- {\expandafter\let\csname minted@optcmd@autogobble\endcsname\@empty}
- {\expandafter\let\csname minted@optcmd@autogobble\endcsname\relax}
- \newboolean{minted@autogobble}
- \newcommand{\minted@set@autogobble}{%
- \ifcsname minted@optg@autogobble\endcsname\else
- \expandafter\let\csname minted@optg@autogobble\endcsname\relax
- \fi
- \ifcsname minted@optlang\minted@lang @autogobble\endcsname\else
- \expandafter\let\csname minted@optlang\minted@lang @autogobble\endcsname\relax
- \fi
- \ifcsname minted@optcmd@autogobble\endcsname\else
- \expandafter\let\csname minted@optcmd@autogobble\endcsname\relax
- \fi
- \expandafter\ifx\csname minted@optcmd@autogobble\endcsname\@empty
- \setboolean{minted@autogobble}{true}%
- \else
- \expandafter\ifx\csname minted@optlang\minted@lang @autogobble\endcsname\@empty
- \setboolean{minted@autogobble}{true}%
- \else
- \expandafter\ifx\csname minted@optg@autogobble\endcsname\@empty
- \setboolean{minted@autogobble}{true}%
- \else
- \setboolean{minted@autogobble}{false}%
- \fi
- \fi
- \fi
- }
- \newsavebox{\minted@bgbox}
- \newenvironment{minted@colorbg}[1]{
- %\setlength{\fboxsep}{-\fboxrule}
- \def\minted@bgcol{#1}
- \noindent
- \begin{lrbox}{\minted@bgbox}
- \begin{minipage}{\linewidth-2\fboxsep}}
- {\end{minipage}
- \end{lrbox}%
- \colorbox{\minted@bgcol}{\usebox{\minted@bgbox}}}
- \newwrite\minted@code
- \newcommand{\minted@savecode}[1]{
- \immediate\openout\minted@code\jobname.pyg\relax
- \immediate\write\minted@code{\expandafter\detokenize\expandafter{#1}}%
- \immediate\closeout\minted@code}
- \newcommand{\minted@write@detok}[1]{%
- \immediate\write\FV@OutFile{\detokenize{#1}}}
- \newcommand{\minted@FVB@VerbatimOut}[1]{%
- \@bsphack
- \begingroup
- \FV@UseKeyValues
- \FV@DefineWhiteSpace
- \def\FV@Space{\space}%
- \FV@DefineTabOut
- \let\FV@ProcessLine\minted@write@detok
- \immediate\openout\FV@OutFile #1\relax
- \let\FV@FontScanPrep\relax
- \let\@noligs\relax
- \FV@Scan}
- \newcommand{\MintedPygmentize}{pygmentize}
- \newcommand{\minted@pygmentize}[2][\jobname.pyg]{%
- \minted@checklang
- \minted@set@autogobble
- \ifthenelse{\boolean{minted@autogobble}}%
- {\def\minted@codefile{\jobname.pyg}}%
- {\def\minted@codefile{#1}}%
- \def\minted@cmd{\MintedPygmentize\space -l #2
- -f latex -F tokenmerge
- \minted@optg \space \csname minted@optlang\minted@lang\endcsname
- \space \minted@optcmd \space -P "verboptions=\minted@getoptg{extra}%
- \minted@getoptlang{extra}\minted@getoptcmd{extra}"
- -o "\minted@outputdir\minted@infile" \space
- "\minted@outputdir\minted@codefile"}%
- % For debugging, uncomment:
- % \immediate\typeout{\minted@cmd}%
- \ifthenelse{\boolean{minted@cache}}%
- {%
- \expandafter\ifx\csname XeTeXinterchartoks\endcsname\relax
- \ifthenelse{\boolean{minted@autogobble}}%
- {\edef\minted@hash{\pdf@filemdfivesum{#1}%
- \pdf@mdfivesum{\minted@cmd autogobble}}}%
- {\edef\minted@hash{\pdf@filemdfivesum{#1}%
- \pdf@mdfivesum{\minted@cmd}}}%
- \else
- \immediate\openout\minted@code\jobname.mintedcmd\relax
- \immediate\write\minted@code{\minted@cmd}%
- \ifthenelse{\boolean{minted@autogobble}}%
- {\immediate\write\minted@code{autogobble}}{}%
- \immediate\closeout\minted@code
- %Cheating a little here by using ASCII codes to write `{` and `}`
- %in the Python code
- \def\minted@hashcmd{%
- \detokenize{python -c "import hashlib;
- hasher = hashlib.sha1();
- f = open(\'}\minted@outputdir\jobname.mintedcmd\detokenize{\', \'rb\');
- hasher.update(f.read());
- f.close();
- f = open(\'}\minted@outputdir#1\detokenize{\', \'rb\');
- hasher.update(f.read());
- f.close();
- f = open(\'}\minted@outputdir\jobname.mintedmd5\detokenize{\', \'w\');
- macro = \'\\edef\\minted@hash\' + chr(123) + hasher.hexdigest() + chr(125) + \'\';
- f.write(\'\\makeatletter\' + macro + \'\\makeatother\n\');
- f.close();"}}%
- \immediate\write18{\minted@hashcmd}
- \input{\minted@outputdir\jobname.mintedmd5}%
- \fi
- \ifwindows
- \edef\minted@infile{%
- \minted@cachedir@windows\@backslashchar\minted@hash.pygtex}%
- \else
- \edef\minted@infile{%
- \minted@cachedir/\minted@hash.pygtex}%
- \fi
- \IfFileExists{\minted@cachedir/\minted@hash.pygtex}{}{%
- \ifthenelse{\boolean{minted@autogobble}}{%
- %Need a version of open() that supports encoding under Python 2
- \edef\minted@autogobblecmd{%
- \detokenize{python -c "import sys;
- import textwrap;
- from io import open;
- f = open(\'}\minted@outputdir#1\detokenize{\', \'r\', encoding=\'}\minted@encoding\detokenize{\');
- t = f.read();
- f.close();
- f = open(\'}\minted@outputdir\jobname.pyg\detokenize{\', \'w\', encoding=\'}\minted@encoding\detokenize{\');
- f.write(textwrap.dedent(t));
- f.close();"}%
- }%
- \immediate\write18{\minted@autogobblecmd}}{}%
- \immediate\write18{\minted@cmd}}%
- \expandafter\minted@addcachefile\expandafter{\minted@hash}%
- \minted@inputpyg}%
- {%
- \ifthenelse{\boolean{minted@autogobble}}{%
- %Need a version of open() that supports encoding under Python 2
- \edef\minted@autogobblecmd{%
- \detokenize{python -c "import sys;
- import textwrap;
- from io import open;
- f = open(\'}\minted@outputdir#1\detokenize{\', \'r\', encoding=\'}\minted@encoding\detokenize{\');
- t = f.read();
- f.close();
- f = open(\'}\minted@outputdir\jobname.pyg\detokenize{\', \'w\', encoding=\'}\minted@encoding\detokenize{\');
- f.write(textwrap.dedent(t));
- f.close();"}%
- }%
- \immediate\write18{\minted@autogobblecmd}}{}%
- \immediate\write18{\minted@cmd}%
- \minted@inputpyg}%
- }
- \newcommand{\minted@inputpyg}{%
- \ifthenelse{\equal{\minted@optcmd@bgcolor}{}}%
- {}%
- {\begin{minted@colorbg}{\minted@optcmd@bgcolor}}%
- \input{\minted@outputdir\minted@infile}%
- \ifthenelse{\equal{\minted@optcmd@bgcolor}{}}%
- {}%
- {\end{minted@colorbg}}%
- }
- \newcounter{minted@FancyVerbLineTemp}
- \newcommand{\minted@langlinenoson}{%
- \ifcsname c@minted@lang\minted@lang\endcsname\else
- \newcounter{minted@lang\minted@lang}%
- \fi
- \setcounter{minted@FancyVerbLineTemp}{\value{FancyVerbLine}}%
- \setcounter{FancyVerbLine}{\value{minted@lang\minted@lang}}%
- }
- \newcommand{\minted@langlinenosoff}{%
- \setcounter{minted@lang\minted@lang}{\value{FancyVerbLine}}%
- \setcounter{FancyVerbLine}{\value{minted@FancyVerbLineTemp}}%
- }
- \ifthenelse{\boolean{minted@langlinenos}}{}{%
- \let\minted@langlinenoson\relax
- \let\minted@langlinenosoff\relax
- }
- \newcommand{\setminted}[2][]{%
- \ifthenelse{\equal{#1}{}}%
- {\setkeys{minted@optg}{#2}}%
- {\def\minted@lang{#1}\setkeys{minted@optlang}{#2}}%
- }
- \newcommand{\usemintedstyle}[2][]{\setminted[#1]{style=#2}}
- \newcommand{\mintinline}[2][]{%
- \minted@resetoptcmd
- \setkeys{minted@optcmd}{#1}%
- \def\minted@lang{#2}%
- \begingroup
- \let\do\@makeother\dospecials
- \catcode`\{=1
- \catcode`\}=2
- \catcode`\^^I=\active
- \@ifnextchar\bgroup
- {\minted@inline@iii}%
- {\catcode`\{=12\catcode`\}=12
- \minted@inline@i}}
- \def\minted@inline@i#1{%
- \endgroup
- \def\minted@inline@ii##1#1{%
- \minted@inline@iii{##1}}%
- \begingroup
- \let\do\@makeother\dospecials
- \minted@inline@ii}
- \newcommand{\minted@inline@iii}[1]{%
- \endgroup
- \immediate\openout\minted@code\jobname.pyg\relax
- \immediate\write\minted@code{\detokenize{#1}}%
- \immediate\closeout\minted@code
- \begingroup
- \RecustomVerbatimEnvironment{Verbatim}{BVerbatim}{}%
- \minted@pygmentize{\minted@lang}%
- \endgroup}
- \newcommand{\mint}[3][]{%
- \def\minted@lang{#2}%
- \DefineShortVerb{#3}%
- \minted@resetoptcmd
- \setkeys{minted@optcmd}{#1}%
- \SaveVerb[aftersave={%
- \UndefineShortVerb{#3}%
- \minted@savecode{\FV@SV@minted@verb}%
- \minted@langlinenoson
- \minted@pygmentize{#2}
- \minted@langlinenosoff}]{minted@verb}#3}
- \newenvironment{minted}[2][]
- {\VerbatimEnvironment
- \let\FVB@VerbatimOut\minted@FVB@VerbatimOut
- \def\minted@lang{#2}%
- \minted@resetoptcmd
- \setkeys{minted@optcmd}{#1}%
- \begin{VerbatimOut}[codes={\catcode`\^^I=12}]{\jobname.pyg}}%
- {\end{VerbatimOut}%
- \minted@langlinenoson
- \minted@pygmentize{\minted@lang}%
- \minted@langlinenosoff}
- \newcommand{\inputminted}[3][]{%
- \def\minted@lang{#2}%
- \minted@resetoptcmd
- \setkeys{minted@optcmd}{#1}%
- \minted@pygmentize[#3]{#2}}
- \newcommand{\newminted}[3][]{
- \ifthenelse{\equal{#1}{}}
- {\def\minted@envname{#2code}}
- {\def\minted@envname{#1}}
- \newenvironment{\minted@envname}
- {\VerbatimEnvironment
- \begin{minted}[#3]{#2}}
- {\end{minted}}
- \newenvironment{\minted@envname *}[1]
- {\VerbatimEnvironment\begin{minted}[#3,##1]{#2}}
- {\end{minted}}}
- \newcommand{\newmint}[3][]{
- \ifthenelse{\equal{#1}{}}
- {\def\minted@shortname{#2}}
- {\def\minted@shortname{#1}}
- \expandafter\newcommand\csname\minted@shortname\endcsname[2][]{
- \mint[#3,##1]{#2}##2}}
- \newcommand{\newmintedfile}[3][]{
- \ifthenelse{\equal{#1}{}}
- {\def\minted@shortname{#2file}}
- {\def\minted@shortname{#1}}
- \expandafter\newcommand\csname\minted@shortname\endcsname[2][]{
- \inputminted[#3,##1]{#2}{##2}}}
- \newcommand{\newmintinline}[3][]{%
- \ifthenelse{\equal{#1}{}}%
- {\def\minted@shortname{#2inline}}%
- {\def\minted@shortname{#1}}%
- \expandafter\newcommand\csname\minted@shortname\endcsname{%
- \begingroup
- \let\do\@makeother\dospecials
- \catcode`\{=1
- \catcode`\}=2
- \@ifnextchar[{\endgroup\minted@inliner[#3][#2]}%
- {\endgroup\minted@inliner[#3][#2][]}}%
- \def\minted@inliner[##1][##2][##3]{\mintinline[##1,##3]{##2}}%
- }
- \@ifundefined{minted@float@within}
- {\newfloat{listing}{h}{lol}}
- {\newfloat{listing}{h}{lol}[\minted@float@within]}
- \newcommand{\listingscaption}{Listing}
- \floatname{listing}{\listingscaption}
- \newcommand{\listoflistingscaption}{List of listings}
- \providecommand{\listoflistings}{\listof{listing}{\listoflistingscaption}}
- \AtEndOfPackage{
- \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{
- \expandafter\ifx\csname XeTeXinterchartoks\endcsname\relax
- \else
- \DeleteFile[\minted@outputdir]{\jobname.mintedcmd}%
- \DeleteFile[\minted@outputdir]{\jobname.mintedmd5}%
- \fi
- \DeleteFile[\minted@outputdir]{\jobname.pyg}%
- \DeleteFile[\minted@outputdir]{\jobname.out.pyg}%
- }
- %% \Finale
- \endinput
- %%
- %% End of file `minted.sty'.
|