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'. |
---|