source: rtems-docs/common/minted.sty @ 63eaa6f

4.115
Last change on this file since 63eaa6f was 63eaa6f, checked in by Amar Takhar <amar@…>, on 03/10/16 at 16:34:19

Add Minted 2015/12/21 v2.2dev (ce7a111)

  • Property mode set to 100644
File size: 55.6 KB
Line 
1%%
2%% This is file `minted.sty',
3%% generated with the docstrip utility.
4%%
5%% The original source files were:
6%%
7%% minted.dtx  (with options: `package')
8%% Copyright 2013--2015 Geoffrey M. Poore
9%% Copyright 2010--2011 Konrad Rudolph
10%%
11%% This work may be distributed and/or modified under the
12%% conditions of the LaTeX Project Public License, either version 1.3
13%% of this license or (at your option) any later version.
14%% The latest version of this license is in
15%%   http://www.latex-project.org/lppl.txt
16%% and version 1.3 or later is part of all distributions of LaTeX
17%% version 2005/12/01 or later.
18%%
19%% Additionally, the project may be distributed under the terms of the new BSD
20%% license.
21%%
22%% This work has the LPPL maintenance status `maintained'.
23%%
24%% The Current Maintainer of this work is Geoffrey Poore.
25%%
26%% This work consists of the files minted.dtx and minted.ins
27%% and the derived file minted.sty.
28\NeedsTeXFormat{LaTeX2e}
29\ProvidesPackage{minted}
30    [2015/12/21 v2.2dev Yet another Pygments shim for LaTeX]
31\RequirePackage{keyval}
32\RequirePackage{kvoptions}
33\RequirePackage{fancyvrb}
34\RequirePackage{float}
35\RequirePackage{ifthen}
36\RequirePackage{calc}
37\RequirePackage{ifplatform}
38\RequirePackage{pdftexcmds}
39\RequirePackage{etoolbox}
40\RequirePackage{xstring}
41\RequirePackage{lineno}
42\AtBeginDocument{%
43  \@ifpackageloaded{color}{}{%
44    \@ifpackageloaded{xcolor}{}{\RequirePackage{xcolor}}}%
45}
46\DeclareVoidOption{chapter}{\def\minted@float@within{chapter}}
47\DeclareVoidOption{section}{\def\minted@float@within{section}}
48\DeclareBoolOption{newfloat}
49\DeclareBoolOption[true]{cache}
50\StrSubstitute{\jobname}{ }{_}[\minted@jobname]
51\StrSubstitute{\minted@jobname}{*}{_}[\minted@jobname]
52\StrSubstitute{\minted@jobname}{"}{}[\minted@jobname]
53\newcommand{\minted@cachedir}{\detokenize{_}minted-\minted@jobname}
54\let\minted@cachedir@windows\minted@cachedir
55\define@key{minted}{cachedir}{%
56  \@namedef{minted@cachedir}{#1}%
57  \StrSubstitute{\minted@cachedir}{/}{\@backslashchar}[\minted@cachedir@windows]}
58\let\minted@outputdir\@empty
59\let\minted@outputdir@windows\@empty
60\define@key{minted}{outputdir}{%
61  \@namedef{minted@outputdir}{#1/}%
62  \StrSubstitute{\minted@outputdir}{/}%
63    {\@backslashchar}[\minted@outputdir@windows]}
64\DeclareBoolOption{kpsewhich}
65\DeclareBoolOption{langlinenos}
66\DeclareBoolOption{draft}
67\DeclareComplementaryOption{final}{draft}
68\ProcessKeyvalOptions*
69\ifthenelse{\boolean{minted@newfloat}}{\RequirePackage{newfloat}}{}
70\ifcsname tikzifexternalizing\endcsname
71  \tikzifexternalizing{\minted@drafttrue\minted@cachefalse}{}
72\else
73  \ifcsname tikzexternalrealjob\endcsname
74    \minted@drafttrue
75    \minted@cachefalse
76  \else
77  \fi
78\fi
79\ifthenelse{\boolean{minted@cache}}{%
80  \AtEndOfPackage{\ProvideDirectory{\minted@outputdir\minted@cachedir}}}{}
81\newcommand{\minted@input}[1]{%
82  \IfFileExists{#1}%
83   {\input{#1}}%
84   {\PackageError{minted}{Missing Pygments output; \string\inputminted\space
85     was^^Jprobably given a file that does not exist--otherwise, you may need
86     ^^Jthe outputdir package option, or may be using an incompatible build
87     tool\ifwindows,^^Jor may be using the kpsewhich option without having
88     PowerShell installed\fi}%
89    {This could be caused by using -output-directory or -aux-directory
90     ^^Jwithout setting minted's outputdir, or by using a build tool that
91     ^^Jchanges paths in ways minted cannot detect\ifwindows, or by using the
92     ^^Jkpsewhich option without PowerShell\fi.}}%
93}
94\newcommand{\minted@infile}{\minted@jobname.out.pyg}
95\newcommand{\minted@cachelist}{}
96\newcommand{\minted@addcachefile}[1]{%
97  \expandafter\long\expandafter\gdef\expandafter\minted@cachelist\expandafter{%
98    \minted@cachelist,^^J%
99    \space\space#1}%
100  \expandafter\gdef\csname minted@cached@#1\endcsname{}%
101}
102\newcommand{\minted@savecachelist}{%
103  \ifdefempty{\minted@cachelist}{}{%
104    \immediate\write\@mainaux{%
105      \string\gdef\string\minted@oldcachelist\string{%
106        \minted@cachelist\string}}%
107  }%
108}
109\newcommand{\minted@cleancache}{%
110  \ifcsname minted@oldcachelist\endcsname
111    \def\do##1{%
112      \ifthenelse{\equal{##1}{}}{}{%
113        \ifcsname minted@cached@##1\endcsname\else
114          \DeleteFile[\minted@outputdir\minted@cachedir]{##1}%
115        \fi
116      }%
117    }%
118    \expandafter\docsvlist\expandafter{\minted@oldcachelist}%
119  \else
120  \fi
121}
122\ifthenelse{\boolean{minted@draft}}%
123  {\AtEndDocument{%
124      \ifcsname minted@oldcachelist\endcsname
125        \let\minted@cachelist\minted@oldcachelist
126        \minted@savecachelist
127      \fi}}%
128  {\AtEndDocument{%
129      \minted@savecachelist
130      \minted@cleancache}}%
131\ifwindows
132  \providecommand{\DeleteFile}[2][]{%
133    \ifthenelse{\equal{#1}{}}%
134      {\IfFileExists{#2}{\immediate\write18{del "#2"}}{}}%
135      {\IfFileExists{#1/#2}{%
136        \StrSubstitute{#1}{/}{\@backslashchar}[\minted@windir]
137        \immediate\write18{del "\minted@windir\@backslashchar #2"}}{}}}
138\else
139  \providecommand{\DeleteFile}[2][]{%
140    \ifthenelse{\equal{#1}{}}%
141      {\IfFileExists{#2}{\immediate\write18{rm "#2"}}{}}%
142      {\IfFileExists{#1/#2}{\immediate\write18{rm "#1/#2"}}{}}}
143\fi
144\ifwindows
145  \newcommand{\ProvideDirectory}[1]{%
146    \StrSubstitute{#1}{/}{\@backslashchar}[\minted@windir]
147    \immediate\write18{if not exist "\minted@windir" mkdir "\minted@windir"}}
148\else
149  \newcommand{\ProvideDirectory}[1]{%
150    \immediate\write18{mkdir -p "#1"}}
151\fi
152\newboolean{AppExists}
153\newread\minted@appexistsfile
154\newcommand{\TestAppExists}[1]{
155  \ifwindows
156    \DeleteFile{\minted@jobname.aex}
157    \immediate\write18{for \string^\@percentchar i in (#1.exe #1.bat #1.cmd)
158      do set >"\minted@jobname.aex" <nul: /p
159      x=\string^\@percentchar \string~$PATH:i>>"\minted@jobname.aex"}
160    %$ <- balance syntax highlighting
161    \immediate\openin\minted@appexistsfile\minted@jobname.aex
162    \expandafter\def\expandafter\@tmp@cr\expandafter{\the\endlinechar}
163    \endlinechar=-1\relax
164    \readline\minted@appexistsfile to \minted@apppathifexists
165    \endlinechar=\@tmp@cr
166    \ifthenelse{\equal{\minted@apppathifexists}{}}
167     {\AppExistsfalse}
168     {\AppExiststrue}
169    \immediate\closein\minted@appexistsfile
170    \DeleteFile{\minted@jobname.aex}
171  \else
172    \immediate\write18{which "#1" && touch "\minted@jobname.aex"}
173    \IfFileExists{\minted@jobname.aex}
174      {\AppExiststrue
175        \DeleteFile{\minted@jobname.aex}}
176      {\AppExistsfalse}
177  \fi
178}
179\newcommand{\minted@optlistcl@g}{}
180\newcommand{\minted@optlistcl@g@i}{}
181\let\minted@lang\@empty
182\newcommand{\minted@optlistcl@lang}{}
183\newcommand{\minted@optlistcl@lang@i}{}
184\newcommand{\minted@optlistcl@cmd}{}
185\newcommand{\minted@optlistfv@g}{}
186\newcommand{\minted@optlistfv@g@i}{}
187\newcommand{\minted@optlistfv@lang}{}
188\newcommand{\minted@optlistfv@lang@i}{}
189\newcommand{\minted@optlistfv@cmd}{}
190\newcommand{\minted@configlang}[1]{%
191  \def\minted@lang{#1}%
192  \ifcsname minted@optlistcl@lang\minted@lang\endcsname\else
193    \expandafter\gdef\csname minted@optlistcl@lang\minted@lang\endcsname{}%
194  \fi
195  \ifcsname minted@optlistcl@lang\minted@lang @i\endcsname\else
196    \expandafter\gdef\csname minted@optlistcl@lang\minted@lang @i\endcsname{}%
197  \fi
198  \ifcsname minted@optlistfv@lang\minted@lang\endcsname\else
199    \expandafter\gdef\csname minted@optlistfv@lang\minted@lang\endcsname{}%
200  \fi
201  \ifcsname minted@optlistfv@lang\minted@lang @i\endcsname\else
202    \expandafter\gdef\csname minted@optlistfv@lang\minted@lang @i\endcsname{}%
203  \fi
204}
205\newcommand{\minted@addto@optlistcl}[2]{%
206  \expandafter\def\expandafter#1\expandafter{#1%
207    \detokenize{#2}\space}}
208\newcommand{\minted@addto@optlistcl@lang}[2]{%
209  \expandafter\let\expandafter\minted@tmp\csname #1\endcsname
210  \expandafter\def\expandafter\minted@tmp\expandafter{\minted@tmp%
211    \detokenize{#2}\space}%
212  \expandafter\let\csname #1\endcsname\minted@tmp}
213\newcommand{\minted@def@optcl}[4][]{%
214  \ifthenelse{\equal{#1}{}}%
215    {\define@key{minted@opt@g}{#2}{%
216        \minted@addto@optlistcl{\minted@optlistcl@g}{#3=#4}%
217        \@namedef{minted@opt@g:#2}{#4}}%
218      \define@key{minted@opt@g@i}{#2}{%
219        \minted@addto@optlistcl{\minted@optlistcl@g@i}{#3=#4}%
220        \@namedef{minted@opt@g@i:#2}{#4}}%
221      \define@key{minted@opt@lang}{#2}{%
222        \minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang}{#3=#4}%
223        \@namedef{minted@opt@lang\minted@lang:#2}{#4}}%
224      \define@key{minted@opt@lang@i}{#2}{%
225        \minted@addto@optlistcl@lang{%
226          minted@optlistcl@lang\minted@lang @i}{#3=#4}%
227        \@namedef{minted@opt@lang\minted@lang @i:#2}{#4}}%
228      \define@key{minted@opt@cmd}{#2}{%
229        \minted@addto@optlistcl{\minted@optlistcl@cmd}{#3=#4}%
230        \@namedef{minted@opt@cmd:#2}{#4}}}%
231    {\define@key{minted@opt@g}{#2}[#1]{%
232        \minted@addto@optlistcl{\minted@optlistcl@g}{#3=#4}%
233        \@namedef{minted@opt@g:#2}{#4}}%
234      \define@key{minted@opt@g@i}{#2}[#1]{%
235        \minted@addto@optlistcl{\minted@optlistcl@g@i}{#3=#4}%
236        \@namedef{minted@opt@g@i:#2}{#4}}%
237      \define@key{minted@opt@lang}{#2}[#1]{%
238        \minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang}{#3=#4}%
239        \@namedef{minted@opt@lang\minted@lang:#2}{#4}}%
240      \define@key{minted@opt@lang@i}{#2}[#1]{%
241        \minted@addto@optlistcl@lang{%
242          minted@optlistcl@lang\minted@lang @i}{#3=#4}%
243        \@namedef{minted@opt@lang\minted@lang @i:#2}{#4}}%
244      \define@key{minted@opt@cmd}{#2}[#1]{%
245        \minted@addto@optlistcl{\minted@optlistcl@cmd}{#3=#4}%
246        \@namedef{minted@opt@cmd:#2}{#4}}}%
247}
248\edef\minted@hashchar{\string#}
249\edef\minted@dollarchar{\string$}
250\edef\minted@ampchar{\string&}
251\edef\minted@underscorechar{\string_}
252\edef\minted@tildechar{\string~}
253\edef\minted@leftsquarebracket{\string[}
254\edef\minted@rightsquarebracket{\string]}
255\newcommand{\minted@escchars}{%
256  \let\#\minted@hashchar
257  \let\%\@percentchar
258  \let\{\@charlb
259  \let\}\@charrb
260  \let\$\minted@dollarchar
261  \let\&\minted@ampchar
262  \let\_\minted@underscorechar
263  \let\\\@backslashchar
264  \let~\minted@tildechar
265  \let\~\minted@tildechar
266  \let\[\minted@leftsquarebracket
267  \let\]\minted@rightsquarebracket
268} %$ <- highlighting
269\newcommand{\minted@addto@optlistcl@e}[2]{%
270  \begingroup
271  \minted@escchars
272  \xdef\minted@xtmp{#2}%
273  \endgroup
274  \expandafter\minted@addto@optlistcl@e@i\expandafter{\minted@xtmp}{#1}}
275\def\minted@addto@optlistcl@e@i#1#2{%
276  \expandafter\def\expandafter#2\expandafter{#2#1\space}}
277\newcommand{\minted@addto@optlistcl@lang@e}[2]{%
278  \begingroup
279  \minted@escchars
280  \xdef\minted@xtmp{#2}%
281  \endgroup
282  \expandafter\minted@addto@optlistcl@lang@e@i\expandafter{\minted@xtmp}{#1}}
283\def\minted@addto@optlistcl@lang@e@i#1#2{%
284  \expandafter\let\expandafter\minted@tmp\csname #2\endcsname
285  \expandafter\def\expandafter\minted@tmp\expandafter{\minted@tmp#1\space}%
286  \expandafter\let\csname #2\endcsname\minted@tmp}
287\newcommand{\minted@def@optcl@e}[4][]{%
288  \ifthenelse{\equal{#1}{}}%
289    {\define@key{minted@opt@g}{#2}{%
290        \minted@addto@optlistcl@e{\minted@optlistcl@g}{#3=#4}%
291        \@namedef{minted@opt@g:#2}{#4}}%
292      \define@key{minted@opt@g@i}{#2}{%
293        \minted@addto@optlistcl@e{\minted@optlistcl@g@i}{#3=#4}%
294        \@namedef{minted@opt@g@i:#2}{#4}}%
295      \define@key{minted@opt@lang}{#2}{%
296        \minted@addto@optlistcl@lang@e{minted@optlistcl@lang\minted@lang}{#3=#4}%
297        \@namedef{minted@opt@lang\minted@lang:#2}{#4}}%
298      \define@key{minted@opt@lang@i}{#2}{%
299        \minted@addto@optlistcl@lang@e{%
300          minted@optlistcl@lang\minted@lang @i}{#3=#4}%
301        \@namedef{minted@opt@lang\minted@lang @i:#2}{#4}}%
302      \define@key{minted@opt@cmd}{#2}{%
303        \minted@addto@optlistcl@e{\minted@optlistcl@cmd}{#3=#4}%
304        \@namedef{minted@opt@cmd:#2}{#4}}}%
305    {\define@key{minted@opt@g}{#2}[#1]{%
306        \minted@addto@optlistcl@e{\minted@optlistcl@g}{#3=#4}%
307        \@namedef{minted@opt@g:#2}{#4}}%
308      \define@key{minted@opt@g@i}{#2}[#1]{%
309        \minted@addto@optlistcl@e{\minted@optlistcl@g@i}{#3=#4}%
310        \@namedef{minted@opt@g@i:#2}{#4}}%
311      \define@key{minted@opt@lang}{#2}[#1]{%
312        \minted@addto@optlistcl@lang@e{minted@optlistcl@lang\minted@lang}{#3=#4}%
313        \@namedef{minted@opt@lang\minted@lang:#2}{#4}}%
314      \define@key{minted@opt@lang@i}{#2}[#1]{%
315        \minted@addto@optlistcl@lang@e{%
316          minted@optlistcl@lang\minted@lang @i}{#3=#4}%
317        \@namedef{minted@opt@lang\minted@lang @i:#2}{#4}}%
318      \define@key{minted@opt@cmd}{#2}[#1]{%
319        \minted@addto@optlistcl@e{\minted@optlistcl@cmd}{#3=#4}%
320        \@namedef{minted@opt@cmd:#2}{#4}}}%
321}
322\newcommand{\minted@def@optcl@switch}[2]{%
323  \define@booleankey{minted@opt@g}{#1}%
324    {\minted@addto@optlistcl{\minted@optlistcl@g}{#2=True}%
325      \@namedef{minted@opt@g:#1}{true}}
326    {\minted@addto@optlistcl{\minted@optlistcl@g}{#2=False}%
327      \@namedef{minted@opt@g:#1}{false}}
328  \define@booleankey{minted@opt@g@i}{#1}%
329    {\minted@addto@optlistcl{\minted@optlistcl@g@i}{#2=True}%
330      \@namedef{minted@opt@g@i:#1}{true}}
331    {\minted@addto@optlistcl{\minted@optlistcl@g@i}{#2=False}%
332      \@namedef{minted@opt@g@i:#1}{false}}
333  \define@booleankey{minted@opt@lang}{#1}%
334    {\minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang}{#2=True}%
335      \@namedef{minted@opt@lang\minted@lang:#1}{true}}
336    {\minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang}{#2=False}%
337      \@namedef{minted@opt@lang\minted@lang:#1}{false}}
338  \define@booleankey{minted@opt@lang@i}{#1}%
339    {\minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang @i}{#2=True}%
340      \@namedef{minted@opt@lang\minted@lang @i:#1}{true}}
341    {\minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang @i}{#2=False}%
342      \@namedef{minted@opt@lang\minted@lang @i:#1}{false}}
343  \define@booleankey{minted@opt@cmd}{#1}%
344      {\minted@addto@optlistcl{\minted@optlistcl@cmd}{#2=True}%
345        \@namedef{minted@opt@cmd:#1}{true}}
346      {\minted@addto@optlistcl{\minted@optlistcl@cmd}{#2=False}%
347        \@namedef{minted@opt@cmd:#1}{false}}
348}
349\newcommand{\minted@def@optfv}[1]{%
350  \define@key{minted@opt@g}{#1}{%
351    \expandafter\def\expandafter\minted@optlistfv@g\expandafter{%
352      \minted@optlistfv@g#1=##1,}%
353    \@namedef{minted@opt@g:#1}{##1}}
354  \define@key{minted@opt@g@i}{#1}{%
355    \expandafter\def\expandafter\minted@optlistfv@g@i\expandafter{%
356      \minted@optlistfv@g@i#1=##1,}%
357    \@namedef{minted@opt@g@i:#1}{##1}}
358  \define@key{minted@opt@lang}{#1}{%
359    \expandafter\let\expandafter\minted@tmp%
360      \csname minted@optlistfv@lang\minted@lang\endcsname
361    \expandafter\def\expandafter\minted@tmp\expandafter{%
362      \minted@tmp#1=##1,}%
363    \expandafter\let\csname minted@optlistfv@lang\minted@lang\endcsname%
364      \minted@tmp
365    \@namedef{minted@opt@lang\minted@lang:#1}{##1}}
366  \define@key{minted@opt@lang@i}{#1}{%
367    \expandafter\let\expandafter\minted@tmp%
368      \csname minted@optlistfv@lang\minted@lang @i\endcsname
369    \expandafter\def\expandafter\minted@tmp\expandafter{%
370      \minted@tmp#1=##1,}%
371    \expandafter\let\csname minted@optlistfv@lang\minted@lang @i\endcsname%
372      \minted@tmp
373    \@namedef{minted@opt@lang\minted@lang @i:#1}{##1}}
374  \define@key{minted@opt@cmd}{#1}{%
375    \expandafter\def\expandafter\minted@optlistfv@cmd\expandafter{%
376      \minted@optlistfv@cmd#1=##1,}%
377    \@namedef{minted@opt@cmd:#1}{##1}}
378}
379\newcommand{\minted@def@optfv@switch}[1]{%
380  \define@booleankey{minted@opt@g}{#1}%
381    {\expandafter\def\expandafter\minted@optlistfv@g\expandafter{%
382      \minted@optlistfv@g#1=true,}%
383     \@namedef{minted@opt@g:#1}{true}}%
384    {\expandafter\def\expandafter\minted@optlistfv@g\expandafter{%
385      \minted@optlistfv@g#1=false,}%
386     \@namedef{minted@opt@g:#1}{false}}%
387  \define@booleankey{minted@opt@g@i}{#1}%
388    {\expandafter\def\expandafter\minted@optlistfv@g@i\expandafter{%
389      \minted@optlistfv@g@i#1=true,}%
390     \@namedef{minted@opt@g@i:#1}{true}}%
391    {\expandafter\def\expandafter\minted@optlistfv@g@i\expandafter{%
392      \minted@optlistfv@g@i#1=false,}%
393     \@namedef{minted@opt@g@i:#1}{false}}%
394  \define@booleankey{minted@opt@lang}{#1}%
395    {\expandafter\let\expandafter\minted@tmp%
396        \csname minted@optlistfv@lang\minted@lang\endcsname
397      \expandafter\def\expandafter\minted@tmp\expandafter{%
398        \minted@tmp#1=true,}%
399      \expandafter\let\csname minted@optlistfv@lang\minted@lang\endcsname%
400        \minted@tmp
401     \@namedef{minted@opt@lang\minted@lang:#1}{true}}%
402    {\expandafter\let\expandafter\minted@tmp%
403        \csname minted@optlistfv@lang\minted@lang\endcsname
404      \expandafter\def\expandafter\minted@tmp\expandafter{%
405        \minted@tmp#1=false,}%
406      \expandafter\let\csname minted@optlistfv@lang\minted@lang\endcsname%
407        \minted@tmp
408     \@namedef{minted@opt@lang\minted@lang:#1}{false}}%
409  \define@booleankey{minted@opt@lang@i}{#1}%
410    {\expandafter\let\expandafter\minted@tmp%
411        \csname minted@optlistfv@lang\minted@lang @i\endcsname
412      \expandafter\def\expandafter\minted@tmp\expandafter{%
413        \minted@tmp#1=true,}%
414      \expandafter\let\csname minted@optlistfv@lang\minted@lang @i\endcsname%
415        \minted@tmp
416     \@namedef{minted@opt@lang\minted@lang @i:#1}{true}}%
417    {\expandafter\let\expandafter\minted@tmp%
418        \csname minted@optlistfv@lang\minted@lang @i\endcsname
419      \expandafter\def\expandafter\minted@tmp\expandafter{%
420        \minted@tmp#1=false,}%
421      \expandafter\let\csname minted@optlistfv@lang\minted@lang @i\endcsname%
422        \minted@tmp
423     \@namedef{minted@opt@lang\minted@lang @i:#1}{false}}%
424  \define@booleankey{minted@opt@cmd}{#1}%
425    {\expandafter\def\expandafter\minted@optlistfv@cmd\expandafter{%
426      \minted@optlistfv@cmd#1=true,}%
427     \@namedef{minted@opt@cmd:#1}{true}}%
428    {\expandafter\def\expandafter\minted@optlistfv@cmd\expandafter{%
429      \minted@optlistfv@cmd#1=false,}%
430     \@namedef{minted@opt@cmd:#1}{false}}%
431}
432\newboolean{minted@isinline}
433\newcommand{\minted@fvset}{%
434  \expandafter\fvset\expandafter{\minted@optlistfv@g}%
435  \expandafter\let\expandafter\minted@tmp%
436    \csname minted@optlistfv@lang\minted@lang\endcsname
437  \expandafter\fvset\expandafter{\minted@tmp}%
438  \ifthenelse{\boolean{minted@isinline}}%
439   {\expandafter\fvset\expandafter{\minted@optlistfv@g@i}%
440    \expandafter\let\expandafter\minted@tmp%
441      \csname minted@optlistfv@lang\minted@lang @i\endcsname
442    \expandafter\fvset\expandafter{\minted@tmp}}%
443   {}%
444  \expandafter\fvset\expandafter{\minted@optlistfv@cmd}%
445}
446\newcommand{\minted@def@opt}[2][]{%
447  \define@key{minted@opt@g}{#2}{%
448    \@namedef{minted@opt@g:#2}{##1}}
449  \define@key{minted@opt@g@i}{#2}{%
450    \@namedef{minted@opt@g@i:#2}{##1}}
451  \define@key{minted@opt@lang}{#2}{%
452    \@namedef{minted@opt@lang\minted@lang:#2}{##1}}
453  \define@key{minted@opt@lang@i}{#2}{%
454    \@namedef{minted@opt@lang\minted@lang @i:#2}{##1}}
455  \define@key{minted@opt@cmd}{#2}{%
456    \@namedef{minted@opt@cmd:#2}{##1}}
457}
458\newcommand{\minted@def@opt@style}{%
459  \define@key{minted@opt@g}{style}{%
460    \minted@checkstyle{##1}%
461    \@namedef{minted@opt@g:style}{##1}}%
462  \define@key{minted@opt@g@i}{style}{%
463    \minted@checkstyle{##1}%
464    \@namedef{minted@opt@g@i:style}{##1}}%
465  \define@key{minted@opt@lang}{style}{%
466    \minted@checkstyle{##1}%
467    \@namedef{minted@opt@lang\minted@lang:style}{##1}}%
468  \define@key{minted@opt@lang@i}{style}{%
469    \minted@checkstyle{##1}%
470    \@namedef{minted@opt@lang\minted@lang @i:style}{##1}}%
471  \define@key{minted@opt@cmd}{style}{%
472    \minted@checkstyle{##1}%
473    \@namedef{minted@opt@cmd:style}{##1}}%
474}
475\newcommand{\minted@checkstyle}[1]{%
476  \ifcsname minted@styleloaded@\ifstrempty{#1}{default-pyg-prefix}{#1}\endcsname\else
477    \expandafter\gdef%
478      \csname minted@styleloaded@\ifstrempty{#1}{default-pyg-prefix}{#1}\endcsname{}%
479    \ifthenelse{\boolean{minted@cache}}%
480      {\IfFileExists
481       {\minted@outputdir\minted@cachedir/\ifstrempty{#1}{default-pyg-prefix}{#1}.pygstyle}%
482       {}%
483       {%
484        \ifwindows
485          \immediate\write18{%
486            \MintedPygmentize\space -S \ifstrempty{#1}{default}{#1} -f latex
487            -P commandprefix=PYG#1
488            > "\minted@outputdir@windows\minted@cachedir@windows\@backslashchar%
489                 \ifstrempty{#1}{default-pyg-prefix}{#1}.pygstyle"}%
490        \else
491          \immediate\write18{%
492            \MintedPygmentize\space -S \ifstrempty{#1}{default}{#1} -f latex
493            -P commandprefix=PYG#1
494            > "\minted@outputdir\minted@cachedir/%
495                 \ifstrempty{#1}{default-pyg-prefix}{#1}.pygstyle"}%
496        \fi
497        }%
498        \begingroup
499        \let\def\gdef
500        \endlinechar=-1\relax
501        \minted@input{%
502          \minted@outputdir\minted@cachedir/\ifstrempty{#1}{default-pyg-prefix}{#1}.pygstyle}%
503        \endgroup
504        \minted@addcachefile{\ifstrempty{#1}{default-pyg-prefix}{#1}.pygstyle}}%
505      {\ifwindows
506          \immediate\write18{%
507            \MintedPygmentize\space -S \ifstrempty{#1}{default}{#1} -f latex
508            -P commandprefix=PYG#1 > "\minted@outputdir@windows\minted@jobname.out.pyg"}%
509        \else
510          \immediate\write18{%
511            \MintedPygmentize\space -S \ifstrempty{#1}{default}{#1} -f latex
512            -P commandprefix=PYG#1 > "\minted@outputdir\minted@jobname.out.pyg"}%
513        \fi
514        \begingroup
515        \let\def\gdef
516        \endlinechar=-1\relax
517        \minted@input{\minted@outputdir\minted@jobname.out.pyg}%
518        \endgroup}%
519  \fi
520}
521\ifthenelse{\boolean{minted@draft}}{\renewcommand{\minted@checkstyle}[1]{}}{}
522\AtBeginDocument{\minted@checkstyle{}}
523\newcommand{\minted@patch@PYGZsq}{%
524  \ifcsname PYGZsq\endcsname
525    \ifx\upquote@cmtt\minted@undefined\else
526      \ifx\encodingdefault\upquote@OTone
527        \ifx\ttdefault\upquote@cmtt
528          \expandafter\ifdefstring\expandafter{\csname PYGZsq\endcsname}{\char`\'}%
529          {\expandafter\gdef\csname PYGZsq\endcsname{\char13 }}{}%
530        \else
531          \expandafter\ifdefstring\expandafter{\csname PYGZsq\endcsname}{\char`\'}%
532          {\expandafter\gdef\csname PYGZsq\endcsname{\textquotesingle}}{}%
533        \fi
534      \else
535        \expandafter\ifdefstring\expandafter{\csname PYGZsq\endcsname}{\char`\'}%
536        {\expandafter\gdef\csname PYGZsq\endcsname{\textquotesingle}}{}%
537      \fi
538    \fi
539  \fi
540}
541\ifthenelse{\boolean{minted@draft}}{}{\AtBeginDocument{\minted@patch@PYGZsq}}
542\newcommand{\minted@def@opt@switch}[2][false]{%
543  \define@booleankey{minted@opt@g}{#2}%
544    {\@namedef{minted@opt@g:#2}{true}}%
545    {\@namedef{minted@opt@g:#2}{false}}
546  \define@booleankey{minted@opt@g@i}{#2}%
547    {\@namedef{minted@opt@g@i:#2}{true}}%
548    {\@namedef{minted@opt@g@i:#2}{false}}
549  \define@booleankey{minted@opt@lang}{#2}%
550    {\@namedef{minted@opt@lang\minted@lang:#2}{true}}%
551    {\@namedef{minted@opt@lang\minted@lang:#2}{false}}
552  \define@booleankey{minted@opt@lang@i}{#2}%
553    {\@namedef{minted@opt@lang\minted@lang @i:#2}{true}}%
554    {\@namedef{minted@opt@lang\minted@lang @i:#2}{false}}
555  \define@booleankey{minted@opt@cmd}{#2}%
556    {\@namedef{minted@opt@cmd:#2}{true}}%
557    {\@namedef{minted@opt@cmd:#2}{false}}%
558  \@namedef{minted@opt@g:#2}{#1}%
559}
560\def\minted@get@opt#1#2{%
561  \ifcsname minted@opt@cmd:#1\endcsname
562    \csname minted@opt@cmd:#1\endcsname
563  \else
564    \ifminted@isinline
565      \ifcsname minted@opt@lang\minted@lang @i:#1\endcsname
566        \csname minted@opt@lang\minted@lang @i:#1\endcsname
567      \else
568        \ifcsname minted@opt@g@i:#1\endcsname
569          \csname minted@opt@g@i:#1\endcsname
570        \else
571          \ifcsname minted@opt@lang\minted@lang:#1\endcsname
572            \csname minted@opt@lang\minted@lang:#1\endcsname
573          \else
574            \ifcsname minted@opt@g:#1\endcsname
575              \csname minted@opt@g:#1\endcsname
576            \else
577              #2%
578            \fi
579          \fi
580        \fi
581      \fi
582    \else
583      \ifcsname minted@opt@lang\minted@lang:#1\endcsname
584        \csname minted@opt@lang\minted@lang:#1\endcsname
585      \else
586        \ifcsname minted@opt@g:#1\endcsname
587          \csname minted@opt@g:#1\endcsname
588        \else
589          #2%
590        \fi
591      \fi
592    \fi
593  \fi
594}%
595\minted@def@optcl{encoding}{-P encoding}{#1}
596\minted@def@optcl{outencoding}{-P outencoding}{#1}
597\minted@def@optcl@e{escapeinside}{-P "escapeinside}{#1"}
598\minted@def@optcl@switch{stripnl}{-P stripnl}
599\minted@def@optcl@switch{stripall}{-P stripall}
600\minted@def@optcl@switch{python3}{-P python3}
601\minted@def@optcl@switch{funcnamehighlighting}{-P funcnamehighlighting}
602\minted@def@optcl@switch{startinline}{-P startinline}
603\ifthenelse{\boolean{minted@draft}}%
604  {\minted@def@optfv{gobble}}%
605  {\minted@def@optcl{gobble}{-F gobble:n}{#1}}
606\minted@def@optcl{codetagify}{-F codetagify:codetags}{#1}
607\minted@def@optcl{keywordcase}{-F keywordcase:case}{#1}
608\minted@def@optcl@switch{texcl}{-P texcomments}
609\minted@def@optcl@switch{texcomments}{-P texcomments}
610\minted@def@optcl@switch{mathescape}{-P mathescape}
611\minted@def@optfv@switch{linenos}
612\minted@def@opt@style
613\minted@def@optfv{frame}
614\minted@def@optfv{framesep}
615\minted@def@optfv{framerule}
616\minted@def@optfv{rulecolor}
617\minted@def@optfv{numbersep}
618\minted@def@optfv{numbers}
619\minted@def@optfv{firstnumber}
620\minted@def@optfv{stepnumber}
621\minted@def@optfv{firstline}
622\minted@def@optfv{lastline}
623\minted@def@optfv{baselinestretch}
624\minted@def@optfv{xleftmargin}
625\minted@def@optfv{xrightmargin}
626\minted@def@optfv{fillcolor}
627\minted@def@optfv{tabsize}
628\minted@def@optfv{fontfamily}
629\minted@def@optfv{fontsize}
630\minted@def@optfv{fontshape}
631\minted@def@optfv{fontseries}
632\minted@def@optfv{formatcom}
633\minted@def@optfv{label}
634\minted@def@optfv@switch{numberblanklines}
635\minted@def@optfv@switch{showspaces}
636\minted@def@optfv@switch{resetmargins}
637\minted@def@optfv@switch{samepage}
638\minted@def@optfv@switch{showtabs}
639\minted@def@optfv@switch{obeytabs}
640\minted@def@optfv@switch{breaklines}
641\minted@def@optfv{breakindent}
642\minted@def@optfv@switch{breakautoindent}
643\minted@def@optfv{breaksymbol}
644\minted@def@optfv{breaksymbolsep}
645\minted@def@optfv{breaksymbolindent}
646\minted@def@optfv{breaksymbolleft}
647\minted@def@optfv{breaksymbolsepleft}
648\minted@def@optfv{breaksymbolindentleft}
649\minted@def@optfv{breaksymbolright}
650\minted@def@optfv{breaksymbolsepright}
651\minted@def@optfv{breaksymbolindentright}
652\minted@def@optfv{breakafter}
653\minted@def@optfv@switch{breakaftergroup}
654\minted@def@optfv{breakaftersymbolpre}
655\minted@def@optfv{breakaftersymbolpost}
656\minted@def@optfv@switch{breakanywhere}
657\minted@def@optfv{breakanywheresymbolpre}
658\minted@def@optfv{breakanywheresymbolpost}
659\minted@def@opt@switch{breakbytoken}
660\minted@def@opt@switch{breakbytokenanywhere}
661\minted@def@opt{bgcolor}
662\minted@def@opt@switch{autogobble}
663\newcommand{\minted@encoding}{\minted@get@opt{encoding}{UTF8}}
664\ifcsname KV@FV@breaklines\endcsname\else
665\newboolean{FV@BreakLines}
666\let\FV@ListProcessLine@Orig\FV@ListProcessLine
667\define@booleankey{FV}{breaklines}%
668  {\FV@BreakLinestrue
669    \let\FV@ListProcessLine\FV@ListProcessLine@Break}%
670  {\FV@BreakLinesfalse
671    \let\FV@ListProcessLine\FV@ListProcessLine@Orig}
672\newdimen\FV@BreakIndent
673\define@key{FV}{breakindent}{\FV@BreakIndent=#1}
674\fvset{breakindent=0pt}
675\newboolean{FV@BreakAutoIndent}
676\define@booleankey{FV}{breakautoindent}%
677  {\FV@BreakAutoIndenttrue}{\FV@BreakAutoIndentfalse}
678\fvset{breakautoindent=true}
679\define@key{FV}{breaksymbolleft}{\def\FancyVerbBreakSymbolLeft{#1}}
680\define@key{FV}{breaksymbol}{\fvset{breaksymbolleft=#1}}
681\fvset{breaksymbolleft=\tiny\ensuremath{\hookrightarrow}}
682\define@key{FV}{breaksymbolright}{\def\FancyVerbBreakSymbolRight{#1}}
683\fvset{breaksymbolright={}}
684\newdimen\FV@BreakSymbolSepLeft
685\define@key{FV}{breaksymbolsepleft}{\FV@BreakSymbolSepLeft=#1}
686\define@key{FV}{breaksymbolsep}{\fvset{breaksymbolsepleft=#1}}
687\fvset{breaksymbolsepleft=1em}
688\newdimen\FV@BreakSymbolSepRight
689\define@key{FV}{breaksymbolsepright}{\FV@BreakSymbolSepRight=#1}
690\fvset{breaksymbolsepright=1em}
691\newdimen\FV@BreakSymbolIndentLeft
692\settowidth{\FV@BreakSymbolIndentLeft}{\ttfamily xxxx}
693\define@key{FV}{breaksymbolindentleft}{\FV@BreakSymbolIndentLeft=#1}
694\define@key{FV}{breaksymbolindent}{\fvset{breaksymbolindentleft=#1}}
695\newdimen\FV@BreakSymbolIndentRight
696\settowidth{\FV@BreakSymbolIndentRight}{\ttfamily xxxx}
697\define@key{FV}{breaksymbolindentright}{\FV@BreakSymbolIndentRight=#1}
698\newcommand{\FancyVerbFormatBreakSymbolLeft}[1]{%
699  \ifnum\value{linenumber}=1\relax\else{#1}\fi}
700\newcounter{FancyVerbLineBreakLast}
701\newcommand{\FV@SetLineBreakLast}{%
702  \setcounter{FancyVerbLineBreakLast}{\value{linenumber}}}
703\newcommand{\FancyVerbFormatBreakSymbolRight}[1]{%
704  \ifnum\value{linenumber}=\value{FancyVerbLineBreakLast}\relax\else{#1}\fi}
705\newboolean{FV@BreakAnywhere}
706\define@booleankey{FV}{breakanywhere}%
707  {\FV@BreakAnywheretrue
708    \let\FancyVerbBreakStart\FV@Break
709    \let\FancyVerbBreakStop\FV@EndBreak
710    \let\FV@Break@Token\FV@Break@AnyToken}%
711  {\FV@BreakAnywherefalse
712    \let\FancyVerbBreakStart\relax
713    \let\FancyVerbBreakStop\relax}
714\fvset{breakanywhere=false}
715\let\FancyVerbBreakStart\relax
716\let\FancyVerbBreakStop\relax
717\edef\FV@hashchar{\string#}
718\edef\FV@dollarchar{\string$}
719\edef\FV@ampchar{\string&}
720\edef\FV@underscorechar{\string_}
721\edef\FV@tildechar{\string~}
722\edef\FV@leftsquarebracket{\string[}
723\edef\FV@rightsquarebracket{\string]}
724\newcommand{\FV@EscChars}{%
725  \let\#\FV@hashchar
726  \let\%\@percentchar
727  \let\{\@charlb
728  \let\}\@charrb
729  \let\$\FV@dollarchar
730  \let\&\FV@ampchar
731  \let\_\FV@underscorechar
732  \let\\\@backslashchar
733  \let~\FV@tildechar
734  \let\~\FV@tildechar
735  \let\[\FV@leftsquarebracket
736  \let\]\FV@rightsquarebracket
737} %$ <- highlighting
738\define@key{FV}{breakafter}{%
739  \ifstrempty{#1}%
740   {\let\FV@BreakAfter\@empty
741    \let\FancyVerbBreakStart\relax
742    \let\FancyVerbBreakStop\relax}%
743   {\def\FV@BreakAfter{#1}%
744    \let\FancyVerbBreakStart\FV@Break
745    \let\FancyVerbBreakStop\FV@EndBreak
746    \let\FV@Break@Token\FV@Break@AfterToken}%
747}
748\fvset{breakafter={}}
749\newboolean{FV@BreakAfterGroup}
750\define@booleankey{FV}{breakaftergroup}%
751 {\FV@BreakAfterGrouptrue}%
752 {\FV@BreakAfterGroupfalse}%
753\fvset{breakaftergroup=true}
754\def\FV@BreakAfterPrep{%
755  \ifx\FV@BreakAfter\@empty\relax
756  \else
757    \gdef\FV@BreakAfter@Def{}%
758    \begingroup
759    \def\FV@BreakAfter@Process##1##2\FV@Undefined{%
760      \expandafter\FV@BreakAfter@Process@i\expandafter{##1}%
761      \expandafter\ifx\expandafter\relax\detokenize{##2}\relax
762      \else
763        \FV@BreakAfter@Process##2\FV@Undefined
764      \fi
765    }%
766    \def\FV@BreakAfter@Process@i##1{%
767      \g@addto@macro\FV@BreakAfter@Def{%
768        \@namedef{FV@BreakAfter@Token\detokenize{##1}}{}}%
769    }%
770    \FV@EscChars
771    \expandafter\FV@BreakAfter@Process\FV@BreakAfter\FV@Undefined
772    \endgroup
773    \FV@BreakAfter@Def
774  \fi
775}
776\expandafter\def\expandafter\FV@FormattingPrep\expandafter{%
777  \expandafter\FV@BreakAfterPrep\FV@FormattingPrep}
778\define@key{FV}{breakanywheresymbolpre}{%
779  \ifstrempty{#1}%
780    {\def\FancyVerbBreakAnywhereSymbolPre{}}%
781    {\def\FancyVerbBreakAnywhereSymbolPre{\hbox{#1}}}}
782\fvset{breakanywheresymbolpre={\,\footnotesize\ensuremath{_\rfloor}}}
783\define@key{FV}{breakanywheresymbolpost}{%
784  \ifstrempty{#1}%
785    {\def\FancyVerbBreakAnywhereSymbolPost{}}%
786    {\def\FancyVerbBreakAnywhereSymbolPost{\hbox{#1}}}}
787\fvset{breakanywheresymbolpost={}}
788\define@key{FV}{breakaftersymbolpre}{%
789  \ifstrempty{#1}%
790    {\def\FancyVerbBreakAfterSymbolPre{}}%
791    {\def\FancyVerbBreakAfterSymbolPre{\hbox{#1}}}}
792\fvset{breakaftersymbolpre={\,\footnotesize\ensuremath{_\rfloor}}}
793\define@key{FV}{breakaftersymbolpost}{%
794  \ifstrempty{#1}%
795    {\def\FancyVerbBreakAfterSymbolPost{}}%
796    {\def\FancyVerbBreakAfterSymbolPost{\hbox{#1}}}}
797\fvset{breakaftersymbolpost={}}
798\newcommand{\FancyVerbBreakAnywhereBreak}{%
799  \discretionary{\FancyVerbBreakAnywhereSymbolPre}%
800   {\FancyVerbBreakAnywhereSymbolPost}{}}
801\newcommand{\FancyVerbBreakAfterBreak}{%
802  \discretionary{\FancyVerbBreakAfterSymbolPre}%
803   {\FancyVerbBreakAfterSymbolPost}{}}
804\newsavebox{\FV@LineBox}
805\newsavebox{\FV@LineIndentBox}
806\let\FV@LineIndentChars\@empty
807\def\FV@GetNextChar{\let\FV@NextChar=}
808\def\FV@CleanRemainingChars#1\FV@Undefined{}
809\def\FV@GetLineIndent{\afterassignment\FV@CheckIndentChar\FV@GetNextChar}
810\def\FV@CheckIndentChar{%
811  \ifx\FV@NextChar\FV@Undefined
812    \let\FV@Next=\relax
813  \else
814    \expandafter\ifx\FV@NextChar\FV@Space
815      \g@addto@macro{\FV@LineIndentChars}{\FV@Space}%
816      \let\FV@Next=\FV@GetLineIndent
817    \else
818      \expandafter\ifx\FV@NextChar\FV@Tab
819        \g@addto@macro{\FV@LineIndentChars}{\FV@Tab}%
820        \let\FV@Next=\FV@GetLineIndent
821      \else
822        \let\FV@Next=\FV@CleanRemainingChars
823      \fi
824    \fi
825  \fi
826  \FV@Next
827}
828\def\FV@Break{%
829  \def\FV@Tmp{}%
830  \FV@Break@Scan
831}
832\def\FV@EndBreak{\FV@Tmp}
833\begingroup
834\catcode`\$=3%
835\gdef\FV@Break@Scan{%
836  \@ifnextchar\FV@EndBreak%
837   {}%
838   {\ifx\@let@token$\relax
839      \let\FV@Break@Next\FV@Break@Math
840    \else
841      \ifx\@let@token\bgroup\relax
842        \let\FV@Break@Next\FV@Break@Group
843      \else
844        \let\FV@Break@Next\FV@Break@Token
845      \fi
846    \fi
847    \FV@Break@Next}%
848}
849\endgroup
850\begingroup
851\catcode`\$=3%
852\gdef\FV@Break@Math$#1${%
853  \g@addto@macro{\FV@Tmp}{$#1$}%
854  \FV@Break@Scan}
855\endgroup
856\def\FV@Break@Group#1{%
857  \g@addto@macro{\FV@Tmp}{{#1}}%
858  \FV@Break@Scan}
859\def\FV@Break@AnyToken#1{%
860  \g@addto@macro{\FV@Tmp}{\FancyVerbBreakAnywhereBreak#1}%
861  \FV@Break@Scan}
862\def\FV@Break@AfterToken#1{%
863  \ifcsname FV@BreakAfter@Token\detokenize{#1}\endcsname
864    \let\FV@Break@Next\FV@Break@AfterTokenBreak
865  \else
866    \let\FV@Break@Next\FV@Break@AfterTokenNoBreak
867  \fi
868  \FV@Break@Next{#1}%
869}
870\def\FV@Break@AfterTokenNoBreak#1{%
871  \g@addto@macro{\FV@Tmp}{#1}%
872  \FV@Break@Scan}
873\def\FV@Break@AfterTokenBreak#1{%
874  \@ifnextchar\FV@Space%
875   {\g@addto@macro{\FV@Tmp}{#1}\FV@Break@Scan}%
876   {\ifthenelse{\boolean{FV@BreakAfterGroup}}%
877     {\ifx\@let@token#1\relax
878        \g@addto@macro{\FV@Tmp}{#1}%
879        \let\FV@Break@Next\FV@Break@Scan
880      \else
881        \ifx\@let@token\bgroup\relax
882          \g@addto@macro{\FV@Tmp}{#1}%
883          \let\FV@TmpToken#1%
884          \let\FV@Break@Next\FV@Break@AfterTokenBreak@Group
885        \else
886          \g@addto@macro{\FV@Tmp}{#1\FancyVerbBreakAfterBreak}%
887          \let\FV@Break@Next\FV@Break@Scan
888        \fi
889      \fi}%
890     {\g@addto@macro{\FV@Tmp}{#1\FancyVerbBreakAfterBreak}%
891      \let\FV@Break@Next\FV@Break@Scan}%
892    \FV@Break@Next}%
893}
894\def\FV@Break@AfterTokenBreak@Group#1{%
895  \g@addto@macro{\FV@Tmp}{{#1}}%
896  \ifstrempty{#1}%
897   {\let\FV@Break@Next\FV@Break@AfterTokenBreak@Group@i}%
898   {\let\FV@Break@Next\FV@Break@Scan}%
899  \FV@Break@Next}
900\def\FV@Break@AfterTokenBreak@Group@i{%
901  \@ifnextchar\FV@TmpToken%
902   {\FV@Break@Scan}%
903   {\g@addto@macro{\FV@Tmp}{\FancyVerbBreakAfterBreak}%
904    \FV@Break@Scan}}
905\def\FV@makeLineNumber{%
906  \hss
907  \FancyVerbFormatBreakSymbolLeft{\FancyVerbBreakSymbolLeft}%
908  \hbox to \FV@BreakSymbolSepLeft{\hfill}%
909  \rlap{\hskip\linewidth
910    \hbox to \FV@BreakSymbolSepRight{\hfill}%
911    \FancyVerbFormatBreakSymbolRight{\FancyVerbBreakSymbolRight}%
912    \FV@SetLineBreakLast
913  }%
914}
915\def\FV@SaveLineBox#1{%
916  \savebox{\FV@LineBox}{%
917    \advance\linewidth by -\FV@BreakIndent
918    \hbox to \FV@BreakIndent{\hfill}%
919    \ifthenelse{\boolean{FV@BreakAutoIndent}}%
920     {\let\FV@LineIndentChars\@empty
921      \FV@GetLineIndent#1\FV@Undefined
922      \savebox{\FV@LineIndentBox}{\FV@LineIndentChars}%
923      \hbox to \wd\FV@LineIndentBox{\hfill}%
924      \advance\linewidth by -\wd\FV@LineIndentBox}%
925     {}%
926    \ifdefempty{\FancyVerbBreakSymbolLeft}{}%
927     {\hbox to \FV@BreakSymbolIndentLeft{\hfill}%
928      \advance\linewidth by -\FV@BreakSymbolIndentLeft}%
929    \ifdefempty{\FancyVerbBreakSymbolRight}{}%
930     {\advance\linewidth by -\FV@BreakSymbolIndentRight}%
931    \parbox[t]{\linewidth}{%
932      \raggedright
933      \leftlinenumbers*
934      \begin{internallinenumbers*}%
935      \let\makeLineNumber\FV@makeLineNumber
936      \noindent\hspace*{-\FV@BreakIndent}%
937      \ifdefempty{\FancyVerbBreakSymbolLeft}{}{%
938        \hspace*{-\FV@BreakSymbolIndentLeft}}%
939      \ifthenelse{\boolean{FV@BreakAutoIndent}}%
940       {\hspace*{-\wd\FV@LineIndentBox}}%
941       {}%
942      \strut\FancyVerbFormatText{%
943        \FancyVerbBreakStart#1\FancyVerbBreakStop}\nobreak\strut
944      \end{internallinenumbers*}
945    }%
946    \ifdefempty{\FancyVerbBreakSymbolRight}{}%
947     {\hbox to \FV@BreakSymbolIndentRight{\hfill}}%
948  }%
949}
950\def\FancyVerbFormatText#1{#1}
951\def\FV@ListProcessLine@Break#1{%
952  \ifx\FV@ObeyTabsInit\relax\else
953    \PackageError{minted}%
954     {the options obeytabs and breaklines are not compatible}{}%
955  \fi
956  \hbox to \hsize{%
957  \kern\leftmargin
958  \hbox to \linewidth{%
959  \ifx\FV@RightListFrame\relax\else
960    \advance\linewidth by -\FV@FrameSep
961    \advance\linewidth by -\FV@FrameRule
962  \fi
963  \ifx\FV@LeftListFrame\relax\else
964    \advance\linewidth by -\FV@FrameSep
965    \advance\linewidth by -\FV@FrameRule
966  \fi
967  \sbox{\FV@LineBox}{\FancyVerbFormatLine{\FancyVerbFormatText{#1}}}%
968  \ifdim\wd\FV@LineBox>\linewidth
969    \setcounter{FancyVerbLineBreakLast}{0}%
970    \FV@SaveLineBox{#1}%
971    \ifdefempty{\FancyVerbBreakSymbolRight}{}{%
972      \let\FV@SetLineBreakLast\relax
973      \FV@SaveLineBox{#1}}%
974    \FV@LeftListNumber
975    \FV@LeftListFrame
976    \FancyVerbFormatLine{\usebox{\FV@LineBox}}%
977    \FV@RightListFrame
978    \FV@RightListNumber
979  \else
980    \FV@LeftListNumber
981    \FV@LeftListFrame
982    \FancyVerbFormatLine{%
983      \parbox[t]{\linewidth}{\noindent\strut\FancyVerbFormatText{#1}\strut}}%
984    \FV@RightListFrame
985    \FV@RightListNumber
986  \fi}%
987  \hss}\baselineskip\z@\lineskip\z@}
988\ifcsname KV@FV@linenos\endcsname\else
989\define@booleankey{FV}{linenos}%
990  {\@nameuse{FV@Numbers@left}}{\@nameuse{FV@Numbers@none}}
991\fi
992\fi
993\newsavebox{\minted@bgbox}
994\newenvironment{minted@colorbg}[1]{
995    %\setlength{\fboxsep}{-\fboxrule}
996    \def\minted@bgcol{#1}
997    \noindent
998    \begin{lrbox}{\minted@bgbox}
999    \begin{minipage}{\linewidth-2\fboxsep}}
1000 {\end{minipage}
1001    \end{lrbox}%
1002    \colorbox{\minted@bgcol}{\usebox{\minted@bgbox}}}
1003\newwrite\minted@code
1004\newcommand{\minted@savecode}[1]{
1005  \immediate\openout\minted@code\minted@jobname.pyg\relax
1006  \immediate\write\minted@code{\expandafter\detokenize\expandafter{#1}}%
1007  \immediate\closeout\minted@code}
1008\newcounter{minted@FancyVerbLineTemp}
1009\newcommand{\minted@write@detok}[1]{%
1010  \immediate\write\FV@OutFile{\detokenize{#1}}}
1011\newcommand{\minted@FVB@VerbatimOut}[1]{%
1012  \setcounter{minted@FancyVerbLineTemp}{\value{FancyVerbLine}}%
1013  \@bsphack
1014  \begingroup
1015    \FV@UseKeyValues
1016    \FV@DefineWhiteSpace
1017    \def\FV@Space{\space}%
1018    \FV@DefineTabOut
1019    \let\FV@ProcessLine\minted@write@detok
1020    \immediate\openout\FV@OutFile #1\relax
1021    \let\FV@FontScanPrep\relax
1022    \let\@noligs\relax
1023    \FV@Scan}
1024\newcommand{\minted@FVE@VerbatimOut}{%
1025  \immediate\closeout\FV@OutFile\endgroup\@esphack
1026  \setcounter{FancyVerbLine}{\value{minted@FancyVerbLineTemp}}}%
1027\ifcsname MintedPygmentize\endcsname\else
1028  \newcommand{\MintedPygmentize}{pygmentize}
1029\fi
1030\newcommand{\minted@pygmentize}[2][\minted@outputdir\minted@jobname.pyg]{%
1031  \ifthenelse{\equal{\minted@get@opt{autogobble}{false}}{true}}%
1032    {\def\minted@codefile{\minted@outputdir\minted@jobname.pyg}}%
1033    {\def\minted@codefile{#1}}%
1034  \ifthenelse{\boolean{minted@isinline}}%
1035    {\def\minted@optlistcl@inlines{%
1036      \minted@optlistcl@g@i
1037      \csname minted@optlistcl@lang\minted@lang @i\endcsname}}%
1038    {\let\minted@optlistcl@inlines\@empty}%
1039  \def\minted@cmd{%
1040    \ifminted@kpsewhich\ifwindows powershell\space\fi\fi
1041    \MintedPygmentize\space -l #2
1042    -f latex -P commandprefix=PYG -F tokenmerge
1043    \minted@optlistcl@g \csname minted@optlistcl@lang\minted@lang\endcsname
1044    \minted@optlistcl@inlines
1045    \minted@optlistcl@cmd -o "\minted@outputdir\minted@infile"
1046    \ifminted@kpsewhich
1047      \ifwindows
1048        \detokenize{$}(kpsewhich "\minted@codefile")%
1049      \else
1050        \detokenize{`}kpsewhich "\minted@codefile"
1051          \detokenize{||} "\minted@codefile"\detokenize{`}%
1052      \fi
1053    \else
1054      "\minted@codefile"
1055    \fi}%
1056  % For debugging, uncomment: %%%%
1057  % \immediate\typeout{\minted@cmd}%
1058  % %%%%
1059  \ifthenelse{\boolean{minted@cache}}%
1060    {%
1061      \ifx\XeTeXinterchartoks\minted@undefined
1062        \ifthenelse{\equal{\minted@get@opt{autogobble}{false}}{true}}%
1063          {\edef\minted@hash{\pdf@filemdfivesum{#1}%
1064            \pdf@mdfivesum{\minted@cmd autogobble}}}%
1065          {\edef\minted@hash{\pdf@filemdfivesum{#1}%
1066            \pdf@mdfivesum{\minted@cmd}}}%
1067      \else
1068        \immediate\openout\minted@code\minted@jobname.mintedcmd\relax
1069        \immediate\write\minted@code{\minted@cmd}%
1070        \ifthenelse{\equal{\minted@get@opt{autogobble}{false}}{true}}%
1071          {\immediate\write\minted@code{autogobble}}{}%
1072        \immediate\closeout\minted@code
1073        %Cheating a little here by using ASCII codes to write `{` and `}`
1074        %in the Python code
1075        \def\minted@hashcmd{%
1076          \detokenize{python -c "import hashlib;
1077            hasher = hashlib.sha1();
1078            f = open(\"}\minted@outputdir\minted@jobname.mintedcmd\detokenize{\", \"rb\");
1079            hasher.update(f.read());
1080            f.close();
1081            f = open(\"}#1\detokenize{\", \"rb\");
1082            hasher.update(f.read());
1083            f.close();
1084            f = open(\"}\minted@outputdir\minted@jobname.mintedmd5\detokenize{\", \"w\");
1085            macro = \"\\edef\\minted@hash\" + chr(123) + hasher.hexdigest() + chr(125) + \"\";
1086            f.write(\"\\makeatletter\" + macro + \"\\makeatother\\endinput\n\");
1087            f.close();"}}%
1088        \immediate\write18{\minted@hashcmd}%
1089        \minted@input{\minted@outputdir\minted@jobname.mintedmd5}%
1090      \fi
1091      \edef\minted@infile{\minted@cachedir/\minted@hash.pygtex}%
1092      \IfFileExists{\minted@infile}{}{%
1093        \ifthenelse{\equal{\minted@get@opt{autogobble}{false}}{true}}{%
1094          %Need a version of open() that supports encoding under Python 2
1095          \edef\minted@autogobblecmd{%
1096            \detokenize{python -c "import sys;
1097            import textwrap;
1098            from io import open;
1099            f = open(\"}#1\detokenize{\", \"r\", encoding=\"}\minted@encoding\detokenize{\");
1100            t = f.read();
1101            f.close();
1102            f = open(\"}\minted@outputdir\minted@jobname.pyg\detokenize{\", \"w\", encoding=\"}\minted@encoding\detokenize{\");
1103            f.write(textwrap.dedent(t));
1104            f.close();"}%
1105          }%
1106          \immediate\write18{\minted@autogobblecmd}}{}%
1107        \immediate\write18{\minted@cmd}}%
1108      \expandafter\minted@addcachefile\expandafter{\minted@hash.pygtex}%
1109      \minted@inputpyg}%
1110    {%
1111      \ifthenelse{\equal{\minted@get@opt{autogobble}{false}}{true}}{%
1112        %Need a version of open() that supports encoding under Python 2
1113        \edef\minted@autogobblecmd{%
1114          \detokenize{python -c "import sys;
1115          import textwrap;
1116          from io import open;
1117          f = open(\"}#1\detokenize{\", \"r\", encoding=\"}\minted@encoding\detokenize{\");
1118          t = f.read();
1119          f.close();
1120          f = open(\"}\minted@outputdir\minted@jobname.pyg\detokenize{\", \"w\", encoding=\"}\minted@encoding\detokenize{\");
1121          f.write(textwrap.dedent(t));
1122          f.close();"}%
1123        }%
1124        \immediate\write18{\minted@autogobblecmd}}{}%
1125      \immediate\write18{\minted@cmd}%
1126      \minted@inputpyg}%
1127}
1128\def\FV@SpaceMMode{ }
1129\def\minted@BreakAfterPrep@extension{%
1130  \ifcsname FV@BreakAfter@Token\@backslashchar\endcsname
1131    \@namedef{FV@BreakAfter@Token\detokenize{\PYGZbs}}{}%
1132  \fi
1133  \ifcsname FV@BreakAfter@Token\FV@underscorechar\endcsname
1134    \@namedef{FV@BreakAfter@Token\detokenize{\PYGZus}}{}%
1135  \fi
1136  \ifcsname FV@BreakAfter@Token\@charlb\endcsname
1137    \@namedef{FV@BreakAfter@Token\detokenize{\PYGZob}}{}%
1138  \fi
1139  \ifcsname FV@BreakAfter@Token\@charrb\endcsname
1140    \@namedef{FV@BreakAfter@Token\detokenize{\PYGZcb}}{}%
1141  \fi
1142  \ifcsname FV@BreakAfter@Token\detokenize{^}\endcsname
1143    \@namedef{FV@BreakAfter@Token\detokenize{\PYGZca}}{}%
1144  \fi
1145  \ifcsname FV@BreakAfter@Token\FV@ampchar\endcsname
1146    \@namedef{FV@BreakAfter@Token\detokenize{\PYGZam}}{}%
1147  \fi
1148  \ifcsname FV@BreakAfter@Token\detokenize{<}\endcsname
1149    \@namedef{FV@BreakAfter@Token\detokenize{\PYGZlt}}{}%
1150  \fi
1151  \ifcsname FV@BreakAfter@Token\detokenize{>}\endcsname
1152    \@namedef{FV@BreakAfter@Token\detokenize{\PYGZgt}}{}%
1153  \fi
1154  \ifcsname FV@BreakAfter@Token\FV@hashchar\endcsname
1155    \@namedef{FV@BreakAfter@Token\detokenize{\PYGZsh}}{}%
1156  \fi
1157  \ifcsname FV@BreakAfter@Token\@percentchar\endcsname
1158    \@namedef{FV@BreakAfter@Token\detokenize{\PYGZpc}}{}%
1159  \fi
1160  \ifcsname FV@BreakAfter@Token\FV@dollarchar\endcsname
1161    \@namedef{FV@BreakAfter@Token\detokenize{\PYGZdl}}{}%
1162  \fi
1163  \ifcsname FV@BreakAfter@Token\detokenize{-}\endcsname
1164    \@namedef{FV@BreakAfter@Token\detokenize{\PYGZhy}}{}%
1165  \fi
1166  \ifcsname FV@BreakAfter@Token\detokenize{'}\endcsname
1167    \@namedef{FV@BreakAfter@Token\detokenize{\PYGZsq}}{}%
1168  \fi
1169  \ifcsname FV@BreakAfter@Token\detokenize{"}\endcsname
1170    \@namedef{FV@BreakAfter@Token\detokenize{\PYGZdq}}{}%
1171  \fi
1172  \ifcsname FV@BreakAfter@Token\FV@tildechar\endcsname
1173    \@namedef{FV@BreakAfter@Token\detokenize{\PYGZti}}{}%
1174  \fi
1175  \ifcsname FV@BreakAfter@Token\detokenize{@}\endcsname
1176    \@namedef{FV@BreakAfter@Token\detokenize{\PYGZat}}{}%
1177  \fi
1178  \ifcsname FV@BreakAfter@Token\detokenize{[}\endcsname
1179    \@namedef{FV@BreakAfter@Token\detokenize{\PYGZlb}}{}%
1180  \fi
1181  \ifcsname FV@BreakAfter@Token\detokenize{]}\endcsname
1182    \@namedef{FV@BreakAfter@Token\detokenize{\PYGZrb}}{}%
1183  \fi
1184}
1185\newcommand{\minted@inputpyg}{%
1186  \let\FV@BreakAfterPrep@orig\FV@BreakAfterPrep
1187  \def\FV@BreakAfterPrep{%
1188    \FV@BreakAfterPrep@orig\minted@BreakAfterPrep@extension}%
1189  \everymath\expandafter{\the\everymath\let\FV@Space\FV@SpaceMMode}%
1190  \ifthenelse{\equal{\minted@get@opt{breakbytokenanywhere}{false}}{true}}%
1191    {\setkeys{minted@opt@cmd}{breakbytoken=true}}{}%
1192  \ifthenelse{\boolean{FV@BreakAnywhere}}%
1193    {\expandafter\let\expandafter\minted@orig@PYG@breakanywhere%
1194       \csname PYG\minted@get@opt{style}{default}\endcsname
1195     \expandafter\def\csname PYG\minted@get@opt{style}{default}\endcsname##1##2{%
1196       \minted@orig@PYG@breakanywhere{##1}%
1197         {\FancyVerbBreakStart##2\FancyVerbBreakStop}}}{}%
1198  \ifx\FV@BreakAfter\@empty
1199  \else
1200    \expandafter\let\expandafter\minted@orig@PYG@breakafter%
1201      \csname PYG\minted@get@opt{style}{default}\endcsname
1202    \expandafter\def\csname PYG\minted@get@opt{style}{default}\endcsname##1##2{%
1203      \minted@orig@PYG@breakafter{##1}%
1204       {\FancyVerbBreakStart##2\FancyVerbBreakStop}}%
1205  \fi
1206  \ifthenelse{\boolean{minted@isinline}}%
1207   {\ifthenelse{\equal{\minted@get@opt{breaklines}{false}}{true}}%
1208    {\let\FV@BeginVBox\relax
1209     \let\FV@EndVBox\relax
1210     \def\FV@BProcessLine##1{\FancyVerbFormatLine{##1}}%
1211     \ifthenelse{\equal{\minted@get@opt{breakbytoken}{false}}{true}}%
1212      {\minted@inputpyg@breakbytoken
1213       \minted@inputpyg@inline}%
1214      {\minted@inputpyg@inline}}%
1215    {\minted@inputpyg@inline}}%
1216   {\ifthenelse{\equal{\minted@get@opt{breaklines}{false}}{true}}%
1217     {\ifthenelse{\equal{\minted@get@opt{breakbytoken}{false}}{true}}%
1218       {\minted@inputpyg@breakbytoken
1219        \minted@inputpyg@block}%
1220       {\minted@inputpyg@block}}%
1221     {\minted@inputpyg@block}}%
1222}
1223\def\minted@inputpyg@breakbytoken{%
1224  \expandafter\let\expandafter\minted@orig@PYG@breakbytoken%
1225    \csname PYG\minted@get@opt{style}{default}\endcsname
1226  \ifthenelse{\equal{\minted@get@opt{breakbytokenanywhere}{false}}{true}}%
1227   {\let\minted@orig@allowbreak\allowbreak
1228    \def\allowbreak{\let\allowbreak\minted@orig@allowbreak}%
1229    \expandafter\def\csname PYG\minted@get@opt{style}{default}\endcsname##1##2{%
1230      \allowbreak{}\leavevmode\hbox{\minted@orig@PYG@breakbytoken{##1}{##2}}}}%
1231   {\expandafter\def\csname PYG\minted@get@opt{style}{default}\endcsname##1##2{%
1232      \leavevmode\hbox{\minted@orig@PYG@breakbytoken{##1}{##2}}}}%
1233}
1234\def\minted@inputpyg@inline{%
1235  \expandafter\let\expandafter\PYG%
1236    \csname PYG\minted@get@opt{style}{default}\endcsname
1237  \ifthenelse{\equal{\minted@get@opt{bgcolor}{}}{}}%
1238   {\minted@input{\minted@outputdir\minted@infile}}%
1239   {\colorbox{\minted@get@opt{bgcolor}{}}{%
1240      \minted@input{\minted@outputdir\minted@infile}}}%
1241}
1242\def\minted@inputpyg@block{%
1243  \expandafter\let\expandafter\PYG%
1244    \csname PYG\minted@get@opt{style}{default}\endcsname
1245  \ifthenelse{\equal{\minted@get@opt{bgcolor}{}}{}}%
1246   {\minted@input{\minted@outputdir\minted@infile}}%
1247   {\begin{minted@colorbg}{\minted@get@opt{bgcolor}{}}%
1248    \minted@input{\minted@outputdir\minted@infile}%
1249    \end{minted@colorbg}}}
1250\newcommand{\minted@langlinenoson}{%
1251  \ifcsname c@minted@lang\minted@lang\endcsname\else
1252    \newcounter{minted@lang\minted@lang}%
1253  \fi
1254  \setcounter{minted@FancyVerbLineTemp}{\value{FancyVerbLine}}%
1255  \setcounter{FancyVerbLine}{\value{minted@lang\minted@lang}}%
1256}
1257\newcommand{\minted@langlinenosoff}{%
1258  \setcounter{minted@lang\minted@lang}{\value{FancyVerbLine}}%
1259  \setcounter{FancyVerbLine}{\value{minted@FancyVerbLineTemp}}%
1260}
1261\ifthenelse{\boolean{minted@langlinenos}}{}{%
1262  \let\minted@langlinenoson\relax
1263  \let\minted@langlinenosoff\relax
1264}
1265\newcommand{\setminted}[2][]{%
1266  \ifthenelse{\equal{#1}{}}%
1267    {\setkeys{minted@opt@g}{#2}}%
1268    {\minted@configlang{#1}%
1269      \setkeys{minted@opt@lang}{#2}}}
1270\newcommand{\setmintedinline}[2][]{%
1271  \ifthenelse{\equal{#1}{}}%
1272    {\setkeys{minted@opt@g@i}{#2}}%
1273    {\minted@configlang{#1}%
1274      \setkeys{minted@opt@lang@i}{#2}}}
1275\setmintedinline[php]{startinline=true}
1276\newcommand{\usemintedstyle}[2][]{\setminted[#1]{style=#2}}
1277\begingroup
1278\catcode`\ =\active
1279\catcode`\^^I=\active
1280\gdef\minted@defwhitespace@retok{\def {\noexpand\FV@Space}\def^^I{\noexpand\FV@Tab}}%
1281\endgroup
1282\newcommand{\minted@writecmdcode}[1]{%
1283  \immediate\openout\minted@code\minted@jobname.pyg\relax
1284  \immediate\write\minted@code{\detokenize{#1}}%
1285  \immediate\closeout\minted@code}
1286\newrobustcmd{\mintinline}[2][]{%
1287  \begingroup
1288  \setboolean{minted@isinline}{true}%
1289  \minted@configlang{#2}%
1290  \setkeys{minted@opt@cmd}{#1}%
1291  \minted@fvset
1292  \begingroup
1293  \let\do\@makeother\dospecials
1294  \catcode`\{=1
1295  \catcode`\}=2
1296  \catcode`\^^I=\active
1297  \@ifnextchar\bgroup
1298    {\minted@inline@iii}%
1299    {\catcode`\{=12\catcode`\}=12
1300      \minted@inline@i}}
1301\def\minted@inline@i#1{%
1302  \endgroup
1303  \def\minted@inline@ii##1#1{%
1304    \minted@inline@iii{##1}}%
1305  \begingroup
1306  \let\do\@makeother\dospecials
1307  \catcode`\^^I=\active
1308  \minted@inline@ii}
1309\ifthenelse{\boolean{minted@draft}}%
1310  {\newcommand{\minted@inline@iii}[1]{%
1311    \endgroup
1312    \begingroup
1313    \minted@defwhitespace@retok
1314    \everyeof{\noexpand}%
1315    \endlinechar-1\relax
1316    \let\do\@makeother\dospecials
1317    \catcode`\ =\active
1318    \catcode`\^^I=\active
1319    \xdef\minted@tmp{\scantokens{#1}}%
1320    \endgroup
1321    \let\FV@Line\minted@tmp
1322    \def\FV@SV@minted@tmp{%
1323      \FV@Gobble
1324      \expandafter\FV@ProcessLine\expandafter{\FV@Line}}%
1325    \ifthenelse{\equal{\minted@get@opt{breaklines}{false}}{true}}%
1326     {\let\FV@BeginVBox\relax
1327      \let\FV@EndVBox\relax
1328      \def\FV@BProcessLine##1{\FancyVerbFormatLine{##1}}%
1329      \BUseVerbatim{minted@tmp}}%
1330     {\BUseVerbatim{minted@tmp}}%
1331    \endgroup}}%
1332  {\newcommand{\minted@inline@iii}[1]{%
1333    \endgroup
1334    \minted@writecmdcode{#1}%
1335    \RecustomVerbatimEnvironment{Verbatim}{BVerbatim}{}%
1336    \setcounter{minted@FancyVerbLineTemp}{\value{FancyVerbLine}}%
1337    \minted@pygmentize{\minted@lang}%
1338    \setcounter{FancyVerbLine}{\value{minted@FancyVerbLineTemp}}%
1339    \endgroup}}
1340\newrobustcmd{\mint}[2][]{%
1341  \begingroup
1342  \minted@configlang{#2}%
1343  \setkeys{minted@opt@cmd}{#1}%
1344  \minted@fvset
1345  \begingroup
1346  \let\do\@makeother\dospecials
1347  \catcode`\{=1
1348  \catcode`\}=2
1349  \catcode`\^^I=\active
1350  \@ifnextchar\bgroup
1351    {\mint@iii}%
1352    {\catcode`\{=12\catcode`\}=12
1353      \mint@i}}
1354\def\mint@i#1{%
1355  \endgroup
1356  \def\mint@ii##1#1{%
1357    \mint@iii{##1}}%
1358  \begingroup
1359  \let\do\@makeother\dospecials
1360  \catcode`\^^I=\active
1361  \mint@ii}
1362\ifthenelse{\boolean{minted@draft}}%
1363  {\newcommand{\mint@iii}[1]{%
1364    \endgroup
1365    \begingroup
1366    \minted@defwhitespace@retok
1367    \everyeof{\noexpand}%
1368    \endlinechar-1\relax
1369    \let\do\@makeother\dospecials
1370    \catcode`\ =\active
1371    \catcode`\^^I=\active
1372    \xdef\minted@tmp{\scantokens{#1}}%
1373    \endgroup
1374    \let\FV@Line\minted@tmp
1375    \def\FV@SV@minted@tmp{%
1376      \FV@CodeLineNo=1\FV@StepLineNo
1377      \FV@Gobble
1378      \expandafter\FV@ProcessLine\expandafter{\FV@Line}}%
1379    \minted@langlinenoson
1380    \UseVerbatim{minted@tmp}%
1381    \minted@langlinenosoff
1382    \endgroup}}%
1383  {\newcommand{\mint@iii}[1]{%
1384    \endgroup
1385    \minted@writecmdcode{#1}%
1386    \minted@langlinenoson
1387    \minted@pygmentize{\minted@lang}%
1388    \minted@langlinenosoff
1389    \endgroup}}
1390\ifthenelse{\boolean{minted@draft}}%
1391  {\newenvironment{minted}[2][]
1392    {\VerbatimEnvironment
1393      \minted@configlang{#2}%
1394      \setkeys{minted@opt@cmd}{#1}%
1395      \minted@fvset
1396      \minted@langlinenoson
1397      \begin{Verbatim}}%
1398    {\end{Verbatim}%
1399      \minted@langlinenosoff}}%
1400  {\newenvironment{minted}[2][]
1401    {\VerbatimEnvironment
1402      \let\FVB@VerbatimOut\minted@FVB@VerbatimOut
1403      \let\FVE@VerbatimOut\minted@FVE@VerbatimOut
1404      \minted@configlang{#2}%
1405      \setkeys{minted@opt@cmd}{#1}%
1406      \minted@fvset
1407      \begin{VerbatimOut}[codes={\catcode`\^^I=12}]{\minted@jobname.pyg}}%
1408    {\end{VerbatimOut}%
1409        \minted@langlinenoson
1410        \minted@pygmentize{\minted@lang}%
1411        \minted@langlinenosoff}}
1412\ifthenelse{\boolean{minted@draft}}%
1413  {\newcommand{\inputminted}[3][]{%
1414    \begingroup
1415    \minted@configlang{#2}%
1416    \setkeys{minted@opt@cmd}{#1}%
1417    \minted@fvset
1418    \VerbatimInput{#3}%
1419    \endgroup}}%
1420  {\newcommand{\inputminted}[3][]{%
1421    \begingroup
1422    \minted@configlang{#2}%
1423    \setkeys{minted@opt@cmd}{#1}%
1424    \minted@fvset
1425    \minted@pygmentize[#3]{#2}%
1426    \endgroup}}
1427\newcommand{\newminted}[3][]{
1428  \ifthenelse{\equal{#1}{}}
1429    {\def\minted@envname{#2code}}
1430    {\def\minted@envname{#1}}
1431  \newenvironment{\minted@envname}
1432    {\VerbatimEnvironment
1433      \begin{minted}[#3]{#2}}
1434    {\end{minted}}
1435  \newenvironment{\minted@envname *}[1]
1436    {\VerbatimEnvironment\begin{minted}[#3,##1]{#2}}
1437    {\end{minted}}}
1438\newcommand{\newmint}[3][]{
1439  \ifthenelse{\equal{#1}{}}
1440    {\def\minted@shortname{#2}}
1441    {\def\minted@shortname{#1}}
1442  \expandafter\newcommand\csname\minted@shortname\endcsname[2][]{
1443    \mint[#3,##1]{#2}##2}}
1444\newcommand{\newmintedfile}[3][]{
1445  \ifthenelse{\equal{#1}{}}
1446    {\def\minted@shortname{#2file}}
1447    {\def\minted@shortname{#1}}
1448  \expandafter\newcommand\csname\minted@shortname\endcsname[2][]{
1449    \inputminted[#3,##1]{#2}{##2}}}
1450\newcommand{\newmintinline}[3][]{%
1451  \ifthenelse{\equal{#1}{}}%
1452    {\def\minted@shortname{#2inline}}%
1453    {\def\minted@shortname{#1}}%
1454    \expandafter\newrobustcmd\csname\minted@shortname\endcsname{%
1455      \begingroup
1456      \let\do\@makeother\dospecials
1457      \catcode`\{=1
1458      \catcode`\}=2
1459      \@ifnextchar[{\endgroup\minted@inliner[#3][#2]}%
1460        {\endgroup\minted@inliner[#3][#2][]}}%
1461    \def\minted@inliner[##1][##2][##3]{\mintinline[##1,##3]{##2}}%
1462}
1463\ifthenelse{\boolean{minted@newfloat}}%
1464 {\@ifundefined{minted@float@within}%
1465    {\DeclareFloatingEnvironment[fileext=lol,placement=h]{listing}}%
1466    {\def\minted@tmp#1{%
1467       \DeclareFloatingEnvironment[fileext=lol,placement=h, within=#1]{listing}}%
1468     \expandafter\minted@tmp\expandafter{\minted@float@within}}}%
1469 {\@ifundefined{minted@float@within}%
1470    {\newfloat{listing}{h}{lol}}%
1471    {\newfloat{listing}{h}{lol}[\minted@float@within]}}
1472\ifminted@newfloat\else
1473\newcommand{\listingscaption}{Listing}
1474\floatname{listing}{\listingscaption}
1475\newcommand{\listoflistingscaption}{List of Listings}
1476\providecommand{\listoflistings}{\listof{listing}{\listoflistingscaption}}
1477\fi
1478\AtEndOfPackage{%
1479  \ifthenelse{\boolean{minted@draft}}{}{%
1480    \ifnum\pdf@shellescape=1\relax\else
1481      \PackageError{minted}%
1482       {You must invoke LaTeX with the
1483        -shell-escape flag}%
1484       {Pass the -shell-escape flag to LaTeX. Refer to the minted.sty
1485        documentation for more information.}%
1486    \fi
1487    \setminted{style=default}%
1488  }%
1489}
1490\AtEndPreamble{%
1491  \ifthenelse{\boolean{minted@draft}}{}{%
1492    \TestAppExists{\MintedPygmentize}%
1493    \ifAppExists\else
1494      \PackageError{minted}%
1495       {You must have `pygmentize' installed
1496        to use this package}%
1497       {Refer to the installation instructions in the minted
1498        documentation for more information.}%
1499    \fi
1500  }%
1501}
1502\AtEndDocument{
1503  \ifx\XeTeXinterchartoks\minted@undefined
1504  \else
1505    \DeleteFile[\minted@outputdir]{\minted@jobname.mintedcmd}%
1506    \DeleteFile[\minted@outputdir]{\minted@jobname.mintedmd5}%
1507  \fi
1508  \DeleteFile[\minted@outputdir]{\minted@jobname.pyg}%
1509  \DeleteFile[\minted@outputdir]{\minted@jobname.out.pyg}%
1510}
1511\endinput
1512%%
1513%% End of file `minted.sty'.
Note: See TracBrowser for help on using the repository browser.