├── .gitignore ├── article ├── .gitignore ├── Makefile ├── preamble.tex ├── article.markdown └── minted.sty ├── beamer ├── Makefile ├── beamer.markdown └── preamble.tex └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | *.log 3 | *.pyg 4 | -------------------------------------------------------------------------------- /article/.gitignore: -------------------------------------------------------------------------------- 1 | gh-pages/ 2 | target/ 3 | *.pyg 4 | *.log 5 | -------------------------------------------------------------------------------- /article/Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: all clean 2 | 3 | TARGET=article.pdf 4 | 5 | all: target $(addprefix target/,$(TARGET)) 6 | 7 | target/%.pdf: %.markdown preamble.tex 8 | pandoc -s -t latex -H "preamble.tex" --base-header-level=1 \ 9 | -o $(basename $@).tex $< 10 | latexmk -pdf -pdflatex="xelatex --shell-escape -halt-on-error -interaction=nonstopmode" \ 11 | -output-directory='target' $(basename $@) 12 | 13 | target: 14 | mkdir -p "./target" 15 | 16 | clean: 17 | rm -rf target/ *.pyg 18 | -------------------------------------------------------------------------------- /beamer/Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: all clean 2 | 3 | TARGET=beamer.pdf 4 | 5 | TEXENGINE=pdflatex 6 | #TEXENGINE=xelatex --shell-escape 7 | 8 | all: target $(addprefix target/,$(TARGET)) 9 | 10 | target/%.pdf: %.markdown preamble.tex 11 | pandoc -s -t beamer -H "preamble.tex" --base-header-level=1 \ 12 | -o $(basename $@).tex $< 13 | latexmk -pdf -pdflatex="$(TEXENGINE) -halt-on-error -interaction=nonstopmode -file-line-error -synctex=1" \ 14 | -output-directory='target' $(basename $@) 15 | 16 | target: 17 | mkdir -p "./target" 18 | 19 | clean: 20 | rm -rf target/ 21 | rm -rf missfont.log 22 | -------------------------------------------------------------------------------- /article/preamble.tex: -------------------------------------------------------------------------------- 1 | % Common Packages 2 | % =============== 3 | 4 | \usepackage{kotex} 5 | \usepackage{cancel} 6 | \usepackage{fontspec} 7 | \usepackage{xltxtra,xunicode} 8 | \usepackage{xcolor} 9 | \usepackage{setspace} 10 | \usepackage{graphicx} 11 | \usepackage{lipsum} 12 | 13 | % use minted.sty v2 for syntax-highlighted codes. 14 | % outputdir should be given, see minted.pdf document 15 | \usepackage[outputdir=target]{minted} 16 | 17 | % Global options for minted 18 | \setminted{linenos,xleftmargin=10pt,framesep=5pt} 19 | 20 | 21 | % Font Settings 22 | % ============= 23 | %\setmainhangulfont{NanumMyeongjo} 24 | \setmainhangulfont{UnBatang} 25 | \setmainhanjafont {UnBatang} 26 | \setsanshangulfont{UnDotum} 27 | 28 | % Styles 29 | % ====== 30 | 31 | % Line Spread (By default, 130%) 32 | \setstretch{1.3} 33 | 34 | % Use first-paragraph indents 35 | \usepackage{indentfirst} 36 | 37 | % Paragraph lengths 38 | \setlength{\parindent}{10pt} 39 | \setlength{\parskip}{0pt} 40 | 41 | % Nested enumerate 42 | \renewcommand{\labelitemi}{$\bullet$} 43 | \renewcommand{\labelitemii}{$\circ$} 44 | \renewcommand{\labelitemiii}{$\cdot$} 45 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | LaTeX-Boilerplate 2 | ================= 3 | 4 | This is a personal template and boilerplate for writing *very-simple* scientific articles, with Markdown, Pandoc, and \LaTeX. 5 | 6 | * [Article](article/article.markdown) [(Preview PDF)](https://github.com/wookayin/latex-boilerplate/blob/gh-pages/pdf/article.pdf) 7 | * [Beamer](beamer/beamer.markdown) [(Preview PDF)](https://github.com/wookayin/latex-boilerplate/blob/gh-pages/pdf/beamer.pdf) 8 | 9 | It is of draft state; several improvements will be added later. 10 | 11 | 12 | ## Bootstrap Your Project 13 | 14 | You can bootstrap your writing (article or beamer) in a single command, if you have `svn` installed. 15 | 16 | ```bash 17 | # Article 18 | svn export https://github.com/wookayin/latex-boilerplate/trunk/article your-article-name 19 | 20 | # Beamer 21 | svn export https://github.com/wookayin/latex-boilerplate/trunk/beamer your-beamer-name 22 | ``` 23 | 24 | Your new workspace directory (e.g. `./your-article-name`) will contain the same contents 25 | as the current master of 26 | [article/](https://github.com/wookayin/latex-boilerplate/tree/master/article) or 27 | [beamer/](https://github.com/wookayin/latex-boilerplate/tree/master/beamer) directory. 28 | 29 | Go get checkout, and start your writing with `git init`! 30 | -------------------------------------------------------------------------------- /beamer/beamer.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | fontsize: 10pt 3 | classoption: 4 | - t 5 | - aspectratio=43 6 | 7 | title: A Simple Beamer Presentation 8 | author: Jongwook Choi 9 | date: \today 10 | --- 11 | 12 | Introduction 13 | ============ 14 | 15 | ## About 16 | 17 | Beamer is awesome! 18 | 19 | \pause 20 | Ta-da! 21 | 22 | ## List 23 | 24 | * Item Level 1 25 | * Item Level 2 26 | * Item Level 3 27 | 28 | 29 | ## Math 30 | 31 | Mathematical expressions are shown in Roman style as 32 | $$ 33 | p(\theta \mid D) = \frac{ 34 | p(D \mid \theta) \cdot p(\theta) 35 | }{ 36 | p(D) 37 | } 38 | $$ 39 | rather than the (default) serif style. 40 | 41 | 42 | ## Blocks 43 | 44 | You can use three pre-defined blocks and other beamer blocks(e.g. \texttt{theorem}) as well. 45 | 46 | \begin{block}{Default} 47 | Block with \texttt{\textbackslash begin\{block\}}. 48 | \end{block} 49 | 50 | \begin{alertblock}{Alert} 51 | Block with \texttt{\textbackslash begin\{alertblock\}}. 52 | \end{alertblock} 53 | 54 | \begin{exampleblock}{Example} 55 | Block with \texttt{\textbackslash begin\{exampleblock\}}. 56 | \end{exampleblock} 57 | 58 | 59 | ## Themes and Other Links 60 | 61 | - List of available beamer themes \cite{ReferenceA}. 62 | - Beamer User Guide \cite{BeamerGuide}. 63 | 64 | 65 | ## References {.allowframebreaks} 66 | 67 | \small 68 | 69 | \bibliographystyle{plain} 70 | \begin{thebibliography}{9} 71 | \bibitem{ReferenceA} LaTeX Beamer Themes. \url{http://latex.simon04.net/} 72 | \bibitem{BeamerGuide} The \textsf{beamer} class: User Guide. \url{http://texdoc.net/texmf-dist/doc/latex/beamer/doc/beameruserguide.pdf} 73 | \end{thebibliography} 74 | 75 | 76 | Thank You! 77 | ========== 78 | -------------------------------------------------------------------------------- /beamer/preamble.tex: -------------------------------------------------------------------------------- 1 | % Common Packages 2 | % =============== 3 | 4 | \PassOptionsToPackage{no-math}{fontspec} 5 | 6 | \usepackage{kotex} 7 | \usepackage{cancel} 8 | \usepackage{ifxetex} 9 | \ifxetex 10 | \usepackage{fontspec} 11 | \fi 12 | \usepackage{xcolor} 13 | \usepackage{graphicx} 14 | \usepackage{lipsum} 15 | 16 | \usepackage[normalem]{ulem} 17 | \usepackage{mathtools} 18 | \usepackage{stackengine} 19 | \usepackage{cancel} 20 | 21 | % Beamer Settings 22 | % =============== 23 | \usetheme[block=fill]{metropolis} % A default theme(filled block option). 24 | %\usetheme{Frankfurt} 25 | %\usecolortheme{beaver} 26 | 27 | % Use Compact Headline (no navigation bars or spaces) 28 | \setbeamertemplate{headline}{} 29 | 30 | 31 | % Font Settings 32 | % ============= 33 | \ifxetex 34 | %\setmainhangulfont{UnBatang} 35 | %\setmainhanjafont {UnBatang} 36 | %\setsanshangulfont{UnDotum} 37 | \fi 38 | 39 | % Use Roman-style fonts rather than Serif-style ones for math 40 | \usefonttheme{professionalfonts} 41 | 42 | 43 | % Styles 44 | % ====== 45 | 46 | % Line Spread (120%) 47 | \linespread{1.2} 48 | 49 | % Use first-paragraph indents 50 | %\usepackage{indentfirst} 51 | 52 | % Paragraph lengths 53 | \setlength{\parindent}{0pt} 54 | \setlength{\parskip}{5pt} 55 | 56 | % Left margin of list/enumerate 57 | \setlength{\leftmargini}{5pt} 58 | 59 | 60 | 61 | % Beamer Customization 62 | % ==================== 63 | 64 | \hypersetup{breaklinks=true, 65 | bookmarks=true, 66 | colorlinks=true, 67 | citecolor=blue, 68 | urlcolor=blue, 69 | linkcolor=magenta, 70 | pdfborder={0 0 0}} 71 | 72 | % Get rid of navigation bars 73 | \beamertemplatenavigationsymbolsempty 74 | 75 | % Footline (Author, title, page number) 76 | \setbeamertemplate{footline} 77 | { 78 | \leavevmode% 79 | \hbox{% 80 | \begin{beamercolorbox}[wd=.2\paperwidth,ht=2.25ex,dp=1ex,left]{author in head/foot}% 81 | \hspace*{1ex} 82 | \usebeamerfont{author in head/foot}\insertshortauthor 83 | \end{beamercolorbox}% 84 | \begin{beamercolorbox}[wd=.8\paperwidth,ht=2.25ex,dp=1ex,right]{title in head/foot}% 85 | \usebeamerfont{title in head/foot}\insertshorttitle\hspace*{3em} 86 | \insertframenumber{} / \inserttotalframenumber\hspace*{1ex} 87 | \end{beamercolorbox}}% 88 | \vskip0pt% 89 | } 90 | 91 | % Bibliography item should show the reference number, e.g. [1] 92 | \setbeamertemplate{bibliography item}{[\theenumiv]} 93 | -------------------------------------------------------------------------------- /article/article.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | title: A Personal \LaTeX + Markdown Writing Template 3 | author: Jongwook Choi 4 | date: \today 5 | 6 | fontsize: 10pt 7 | geometry: top=1in, bottom=1in, left=1in, right=1in 8 | numbersections: true 9 | graphics: true 10 | --- 11 | 12 | 13 | # About 14 | 15 | This is a personal template and boilerplate 16 | for writing *very-simple* scientific articles, based on Markdown and \LaTeX. 17 | 18 | # Features and Demonstrations 19 | 20 | - A separate directory for build (`/target`) 21 | - 한글 및 漢字가 포함된 문서 작성 22 | - \textbf{굵게}, \textit{이탤릭체}, \texttt{타이프라이터}, \textsf{세리프} 23 | - \textbf{Bold}, \textit{Italic}, \texttt{Typewriter}, \textsf{Serif} 24 | - 글꼴 변경: 나눔명조 및 은바탕 25 | - Nested List Level 1 26 | - Nested List Level 2 27 | - Nested List Level 3 28 | - Mathematical notations 29 | $$ 30 | e^{i \pi} + 1 = 0 31 | $$ 32 | - `Verbatim` texts and Code blocks (see Section \ref{highlighted-codes}) 33 | - Images and Pictures (TODO) 34 | - Bibilographies (TODO) 35 | 36 | 37 | \newpage 38 | 39 | ## Highlighted Codes, powered by `minted` 40 | \label{highlighted-codes} 41 | 42 | One can insert syntax-highlighted codes into the document, thanks to `minted` package. 43 | The build process would require `Pygments` python package; 44 | make sure that the `pygmentize` is available from the command-line. 45 | The document-wide global option is specified in `preamble.tex`, and a listing can override options as well. 46 | 47 | \bigskip 48 | OK, now let's see in action --- here is a sample C++ snippet: 49 | 50 | \begin{minted}[mathescape,frame=single]{cpp} 51 | /* A C++ Code that computes $\mathrm{gcd}(x, y)$ in $O(\log n)$ time */ 52 | auto gcd(int x, int y) -> int { 53 | return y == 0 ? x : gcd(y, x % y); 54 | } 55 | \end{minted} 56 | 57 | Or, even an inline code: do you see the \mintinline{cpp}{auto} part? 58 | 59 | **Note**: If you are going to insert lots of code snippets, or separate out code contents into external files, then `minted`'s shortcut feature (e.g. 60 | \mintinline{latex}{\pythoninline/print True/} or \mintinline{latex}{\inputpython{demo.py}}, etc.) might be useful. However, to my knowledge, there is an issue of unwanted escapings with pandoc, so demonstrations of these are omitted as of now. 61 | 62 | 63 | 64 | 65 | \newpage 66 | 67 | # Technical Details 68 | 69 | ## Tools (tested on Mac OS X) 70 | 71 | - [Pandoc](http://johnmacfarlane.net/pandoc/) for converting markdown sources into \LaTeX files. 72 | (Tested with 1.13.2) 73 | - [\XeLaTeX](http://www.xelatex.org/) for typesetting into PDF. 74 | (Tested with Tex Live 2013) 75 | 76 | ## Structures 77 | 78 | - `Makefile` (see TARGET) 79 | - `document-title.markdown` : The raw source in Markdown 80 | - `premable.tex` : The premable for settings styles, etc. 81 | - `target/document-title.pdf` : The deliverable. 82 | - `images/` : A collection of images embedded in the document. 83 | 84 | # References 85 | 86 | - [Pandoc's Markdown](http://johnmacfarlane.net/pandoc/README.html#pandocs-markdown) 87 | - [\XeTeX-ko 간단 매뉴얼](http://mirror.hmc.edu/ctan/macros/xetex/generic/xetexko/xetexko-doc.pdf) 88 | - [minted.sty Documentation](https://github.com/gpoore/minted) 89 | - [User-contributed Templates](https://github.com/jgm/pandoc/wiki/User-contributed-templates) 90 | - [jgm/pandoc-templates](https://github.com/jgm/pandoc-templates) 91 | 92 | 93 | 94 | 95 | \newpage 96 | 97 | # Lorem Ipsum 98 | 99 | ## Subsection: Lorem Ipsum 100 | 101 | \lipsum[1] 102 | 103 | ### Subsubsection: Lorem Ipsum 104 | 105 | \lipsum[2-4] 106 | -------------------------------------------------------------------------------- /article/minted.sty: -------------------------------------------------------------------------------- 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/09/09 v2.1 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 tikzexternalrealjob\endcsname 71 | \minted@drafttrue 72 | \minted@cachefalse 73 | \else 74 | \fi 75 | \ifthenelse{\boolean{minted@cache}}{% 76 | \AtEndOfPackage{\ProvideDirectory{\minted@outputdir\minted@cachedir}}}{} 77 | \newcommand{\minted@input}[1]{% 78 | \IfFileExists{#1}% 79 | {\input{#1}}% 80 | {\PackageError{minted}{Missing Pygments output; \string\inputminted\space 81 | was^^Jprobably given a file that does not exist--otherwise, you may need 82 | ^^Jthe outputdir package option, or may be using an incompatible build 83 | tool\ifwindows,^^Jor may be using the kpsewhich option without having 84 | PowerShell installed\fi}% 85 | {This could be caused by using -output-directory or -aux-directory 86 | ^^Jwithout setting minted's outputdir, or by using a build tool that 87 | ^^Jchanges paths in ways minted cannot detect\ifwindows, or by using the 88 | ^^Jkpsewhich option without PowerShell\fi.}}% 89 | } 90 | \newcommand{\minted@infile}{\minted@jobname.out.pyg} 91 | \newcommand{\minted@cachelist}{} 92 | \newcommand{\minted@addcachefile}[1]{% 93 | \expandafter\long\expandafter\gdef\expandafter\minted@cachelist\expandafter{% 94 | \minted@cachelist,^^J% 95 | \space\space#1}% 96 | \expandafter\gdef\csname minted@cached@#1\endcsname{}% 97 | } 98 | \newcommand{\minted@savecachelist}{% 99 | \ifdefempty{\minted@cachelist}{}{% 100 | \immediate\write\@mainaux{% 101 | \string\gdef\string\minted@oldcachelist\string{% 102 | \minted@cachelist\string}}% 103 | }% 104 | } 105 | \newcommand{\minted@cleancache}{% 106 | \ifcsname minted@oldcachelist\endcsname 107 | \def\do##1{% 108 | \ifthenelse{\equal{##1}{}}{}{% 109 | \ifcsname minted@cached@##1\endcsname\else 110 | \DeleteFile[\minted@outputdir\minted@cachedir]{##1}% 111 | \fi 112 | }% 113 | }% 114 | \expandafter\docsvlist\expandafter{\minted@oldcachelist}% 115 | \else 116 | \fi 117 | } 118 | \ifthenelse{\boolean{minted@draft}}% 119 | {\AtEndDocument{% 120 | \ifcsname minted@oldcachelist\endcsname 121 | \let\minted@cachelist\minted@oldcachelist 122 | \minted@savecachelist 123 | \fi}}% 124 | {\AtEndDocument{% 125 | \minted@savecachelist 126 | \minted@cleancache}}% 127 | \ifwindows 128 | \providecommand{\DeleteFile}[2][]{% 129 | \ifthenelse{\equal{#1}{}}% 130 | {\IfFileExists{#2}{\immediate\write18{del "#2"}}{}}% 131 | {\IfFileExists{#1/#2}{% 132 | \StrSubstitute{#1}{/}{\@backslashchar}[\minted@windir] 133 | \immediate\write18{del "\minted@windir\@backslashchar #2"}}{}}} 134 | \else 135 | \providecommand{\DeleteFile}[2][]{% 136 | \ifthenelse{\equal{#1}{}}% 137 | {\IfFileExists{#2}{\immediate\write18{rm "#2"}}{}}% 138 | {\IfFileExists{#1/#2}{\immediate\write18{rm "#1/#2"}}{}}} 139 | \fi 140 | \ifwindows 141 | \newcommand{\ProvideDirectory}[1]{% 142 | \StrSubstitute{#1}{/}{\@backslashchar}[\minted@windir] 143 | \immediate\write18{if not exist "\minted@windir" mkdir "\minted@windir"}} 144 | \else 145 | \newcommand{\ProvideDirectory}[1]{% 146 | \immediate\write18{mkdir -p "#1"}} 147 | \fi 148 | \newboolean{AppExists} 149 | \newread\minted@appexistsfile 150 | \newcommand{\TestAppExists}[1]{ 151 | \ifwindows 152 | \DeleteFile{\minted@jobname.aex} 153 | \immediate\write18{for \string^\@percentchar i in (#1.exe #1.bat #1.cmd) 154 | do set >"\minted@jobname.aex" >"\minted@jobname.aex"} 156 | %$ <- balance syntax highlighting 157 | \immediate\openin\minted@appexistsfile\minted@jobname.aex 158 | \expandafter\def\expandafter\@tmp@cr\expandafter{\the\endlinechar} 159 | \endlinechar=-1\relax 160 | \readline\minted@appexistsfile to \minted@apppathifexists 161 | \endlinechar=\@tmp@cr 162 | \ifthenelse{\equal{\minted@apppathifexists}{}} 163 | {\AppExistsfalse} 164 | {\AppExiststrue} 165 | \immediate\closein\minted@appexistsfile 166 | \DeleteFile{\minted@jobname.aex} 167 | \else 168 | \immediate\write18{which "#1" && touch "\minted@jobname.aex"} 169 | \IfFileExists{\minted@jobname.aex} 170 | {\AppExiststrue 171 | \DeleteFile{\minted@jobname.aex}} 172 | {\AppExistsfalse} 173 | \fi 174 | } 175 | \newcommand{\minted@optlistcl@g}{} 176 | \newcommand{\minted@optlistcl@g@i}{} 177 | \let\minted@lang\@empty 178 | \newcommand{\minted@optlistcl@lang}{} 179 | \newcommand{\minted@optlistcl@lang@i}{} 180 | \newcommand{\minted@optlistcl@cmd}{} 181 | \newcommand{\minted@optlistfv@g}{} 182 | \newcommand{\minted@optlistfv@g@i}{} 183 | \newcommand{\minted@optlistfv@lang}{} 184 | \newcommand{\minted@optlistfv@lang@i}{} 185 | \newcommand{\minted@optlistfv@cmd}{} 186 | \newcommand{\minted@configlang}[1]{% 187 | \def\minted@lang{#1}% 188 | \ifcsname minted@optlistcl@lang\minted@lang\endcsname\else 189 | \expandafter\gdef\csname minted@optlistcl@lang\minted@lang\endcsname{}% 190 | \fi 191 | \ifcsname minted@optlistcl@lang\minted@lang @i\endcsname\else 192 | \expandafter\gdef\csname minted@optlistcl@lang\minted@lang @i\endcsname{}% 193 | \fi 194 | \ifcsname minted@optlistfv@lang\minted@lang\endcsname\else 195 | \expandafter\gdef\csname minted@optlistfv@lang\minted@lang\endcsname{}% 196 | \fi 197 | \ifcsname minted@optlistfv@lang\minted@lang @i\endcsname\else 198 | \expandafter\gdef\csname minted@optlistfv@lang\minted@lang @i\endcsname{}% 199 | \fi 200 | } 201 | \newcommand{\minted@addto@optlistcl}[2]{% 202 | \expandafter\def\expandafter#1\expandafter{#1% 203 | \detokenize{#2}\space}} 204 | \newcommand{\minted@addto@optlistcl@lang}[2]{% 205 | \expandafter\let\expandafter\minted@tmp\csname #1\endcsname 206 | \expandafter\def\expandafter\minted@tmp\expandafter{\minted@tmp% 207 | \detokenize{#2}\space}% 208 | \expandafter\let\csname #1\endcsname\minted@tmp} 209 | \newcommand{\minted@def@optcl}[4][]{% 210 | \ifthenelse{\equal{#1}{}}% 211 | {\define@key{minted@opt@g}{#2}{% 212 | \minted@addto@optlistcl{\minted@optlistcl@g}{#3=#4}% 213 | \@namedef{minted@opt@g:#2}{#4}}% 214 | \define@key{minted@opt@g@i}{#2}{% 215 | \minted@addto@optlistcl{\minted@optlistcl@g@i}{#3=#4}% 216 | \@namedef{minted@opt@g@i:#2}{#4}}% 217 | \define@key{minted@opt@lang}{#2}{% 218 | \minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang}{#3=#4}% 219 | \@namedef{minted@opt@lang\minted@lang:#2}{#4}}% 220 | \define@key{minted@opt@lang@i}{#2}{% 221 | \minted@addto@optlistcl@lang{% 222 | minted@optlistcl@lang\minted@lang @i}{#3=#4}% 223 | \@namedef{minted@opt@lang\minted@lang @i:#2}{#4}}% 224 | \define@key{minted@opt@cmd}{#2}{% 225 | \minted@addto@optlistcl{\minted@optlistcl@cmd}{#3=#4}% 226 | \@namedef{minted@opt@cmd:#2}{#4}}}% 227 | {\define@key{minted@opt@g}{#2}[#1]{% 228 | \minted@addto@optlistcl{\minted@optlistcl@g}{#3=#4}% 229 | \@namedef{minted@opt@g:#2}{#4}}% 230 | \define@key{minted@opt@g@i}{#2}[#1]{% 231 | \minted@addto@optlistcl{\minted@optlistcl@g@i}{#3=#4}% 232 | \@namedef{minted@opt@g@i:#2}{#4}}% 233 | \define@key{minted@opt@lang}{#2}[#1]{% 234 | \minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang}{#3=#4}% 235 | \@namedef{minted@opt@lang\minted@lang:#2}{#4}}% 236 | \define@key{minted@opt@lang@i}{#2}[#1]{% 237 | \minted@addto@optlistcl@lang{% 238 | minted@optlistcl@lang\minted@lang @i}{#3=#4}% 239 | \@namedef{minted@opt@lang\minted@lang @i:#2}{#4}}% 240 | \define@key{minted@opt@cmd}{#2}[#1]{% 241 | \minted@addto@optlistcl{\minted@optlistcl@cmd}{#3=#4}% 242 | \@namedef{minted@opt@cmd:#2}{#4}}}% 243 | } 244 | \edef\minted@hashchar{\string#} 245 | \edef\minted@dollarchar{\string$} 246 | \edef\minted@ampchar{\string&} 247 | \edef\minted@underscorechar{\string_} 248 | \edef\minted@tildechar{\string~} 249 | \edef\minted@leftsquarebracket{\string[} 250 | \edef\minted@rightsquarebracket{\string]} 251 | \newcommand{\minted@escchars}{% 252 | \let\#\minted@hashchar 253 | \let\%\@percentchar 254 | \let\{\@charlb 255 | \let\}\@charrb 256 | \let\$\minted@dollarchar 257 | \let\&\minted@ampchar 258 | \let\_\minted@underscorechar 259 | \let\\\@backslashchar 260 | \let~\minted@tildechar 261 | \let\~\minted@tildechar 262 | \let\[\minted@leftsquarebracket 263 | \let\]\minted@rightsquarebracket 264 | } %$ <- highlighting 265 | \newcommand{\minted@addto@optlistcl@e}[2]{% 266 | \begingroup 267 | \minted@escchars 268 | \xdef\minted@xtmp{#2}% 269 | \endgroup 270 | \expandafter\minted@addto@optlistcl@e@i\expandafter{\minted@xtmp}{#1}} 271 | \def\minted@addto@optlistcl@e@i#1#2{% 272 | \expandafter\def\expandafter#2\expandafter{#2#1\space}} 273 | \newcommand{\minted@addto@optlistcl@lang@e}[2]{% 274 | \begingroup 275 | \minted@escchars 276 | \xdef\minted@xtmp{#2}% 277 | \endgroup 278 | \expandafter\minted@addto@optlistcl@lang@e@i\expandafter{\minted@xtmp}{#1}} 279 | \def\minted@addto@optlistcl@lang@e@i#1#2{% 280 | \expandafter\let\expandafter\minted@tmp\csname #2\endcsname 281 | \expandafter\def\expandafter\minted@tmp\expandafter{\minted@tmp#1\space}% 282 | \expandafter\let\csname #2\endcsname\minted@tmp} 283 | \newcommand{\minted@def@optcl@e}[4][]{% 284 | \ifthenelse{\equal{#1}{}}% 285 | {\define@key{minted@opt@g}{#2}{% 286 | \minted@addto@optlistcl@e{\minted@optlistcl@g}{#3=#4}% 287 | \@namedef{minted@opt@g:#2}{#4}}% 288 | \define@key{minted@opt@g@i}{#2}{% 289 | \minted@addto@optlistcl@e{\minted@optlistcl@g@i}{#3=#4}% 290 | \@namedef{minted@opt@g@i:#2}{#4}}% 291 | \define@key{minted@opt@lang}{#2}{% 292 | \minted@addto@optlistcl@lang@e{minted@optlistcl@lang\minted@lang}{#3=#4}% 293 | \@namedef{minted@opt@lang\minted@lang:#2}{#4}}% 294 | \define@key{minted@opt@lang@i}{#2}{% 295 | \minted@addto@optlistcl@lang@e{% 296 | minted@optlistcl@lang\minted@lang @i}{#3=#4}% 297 | \@namedef{minted@opt@lang\minted@lang @i:#2}{#4}}% 298 | \define@key{minted@opt@cmd}{#2}{% 299 | \minted@addto@optlistcl@e{\minted@optlistcl@cmd}{#3=#4}% 300 | \@namedef{minted@opt@cmd:#2}{#4}}}% 301 | {\define@key{minted@opt@g}{#2}[#1]{% 302 | \minted@addto@optlistcl@e{\minted@optlistcl@g}{#3=#4}% 303 | \@namedef{minted@opt@g:#2}{#4}}% 304 | \define@key{minted@opt@g@i}{#2}[#1]{% 305 | \minted@addto@optlistcl@e{\minted@optlistcl@g@i}{#3=#4}% 306 | \@namedef{minted@opt@g@i:#2}{#4}}% 307 | \define@key{minted@opt@lang}{#2}[#1]{% 308 | \minted@addto@optlistcl@lang@e{minted@optlistcl@lang\minted@lang}{#3=#4}% 309 | \@namedef{minted@opt@lang\minted@lang:#2}{#4}}% 310 | \define@key{minted@opt@lang@i}{#2}[#1]{% 311 | \minted@addto@optlistcl@lang@e{% 312 | minted@optlistcl@lang\minted@lang @i}{#3=#4}% 313 | \@namedef{minted@opt@lang\minted@lang @i:#2}{#4}}% 314 | \define@key{minted@opt@cmd}{#2}[#1]{% 315 | \minted@addto@optlistcl@e{\minted@optlistcl@cmd}{#3=#4}% 316 | \@namedef{minted@opt@cmd:#2}{#4}}}% 317 | } 318 | \newcommand{\minted@def@optcl@switch}[2]{% 319 | \define@booleankey{minted@opt@g}{#1}% 320 | {\minted@addto@optlistcl{\minted@optlistcl@g}{#2=True}% 321 | \@namedef{minted@opt@g:#1}{true}} 322 | {\minted@addto@optlistcl{\minted@optlistcl@g}{#2=False}% 323 | \@namedef{minted@opt@g:#1}{false}} 324 | \define@booleankey{minted@opt@g@i}{#1}% 325 | {\minted@addto@optlistcl{\minted@optlistcl@g@i}{#2=True}% 326 | \@namedef{minted@opt@g@i:#1}{true}} 327 | {\minted@addto@optlistcl{\minted@optlistcl@g@i}{#2=False}% 328 | \@namedef{minted@opt@g@i:#1}{false}} 329 | \define@booleankey{minted@opt@lang}{#1}% 330 | {\minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang}{#2=True}% 331 | \@namedef{minted@opt@lang\minted@lang:#1}{true}} 332 | {\minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang}{#2=False}% 333 | \@namedef{minted@opt@lang\minted@lang:#1}{false}} 334 | \define@booleankey{minted@opt@lang@i}{#1}% 335 | {\minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang @i}{#2=True}% 336 | \@namedef{minted@opt@lang\minted@lang @i:#1}{true}} 337 | {\minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang @i}{#2=False}% 338 | \@namedef{minted@opt@lang\minted@lang @i:#1}{false}} 339 | \define@booleankey{minted@opt@cmd}{#1}% 340 | {\minted@addto@optlistcl{\minted@optlistcl@cmd}{#2=True}% 341 | \@namedef{minted@opt@cmd:#1}{true}} 342 | {\minted@addto@optlistcl{\minted@optlistcl@cmd}{#2=False}% 343 | \@namedef{minted@opt@cmd:#1}{false}} 344 | } 345 | \newcommand{\minted@def@optfv}[1]{% 346 | \define@key{minted@opt@g}{#1}{% 347 | \expandafter\def\expandafter\minted@optlistfv@g\expandafter{% 348 | \minted@optlistfv@g#1=##1,}% 349 | \@namedef{minted@opt@g:#1}{##1}} 350 | \define@key{minted@opt@g@i}{#1}{% 351 | \expandafter\def\expandafter\minted@optlistfv@g@i\expandafter{% 352 | \minted@optlistfv@g@i#1=##1,}% 353 | \@namedef{minted@opt@g@i:#1}{##1}} 354 | \define@key{minted@opt@lang}{#1}{% 355 | \expandafter\let\expandafter\minted@tmp% 356 | \csname minted@optlistfv@lang\minted@lang\endcsname 357 | \expandafter\def\expandafter\minted@tmp\expandafter{% 358 | \minted@tmp#1=##1,}% 359 | \expandafter\let\csname minted@optlistfv@lang\minted@lang\endcsname% 360 | \minted@tmp 361 | \@namedef{minted@opt@lang\minted@lang:#1}{##1}} 362 | \define@key{minted@opt@lang@i}{#1}{% 363 | \expandafter\let\expandafter\minted@tmp% 364 | \csname minted@optlistfv@lang\minted@lang @i\endcsname 365 | \expandafter\def\expandafter\minted@tmp\expandafter{% 366 | \minted@tmp#1=##1,}% 367 | \expandafter\let\csname minted@optlistfv@lang\minted@lang @i\endcsname% 368 | \minted@tmp 369 | \@namedef{minted@opt@lang\minted@lang @i:#1}{##1}} 370 | \define@key{minted@opt@cmd}{#1}{% 371 | \expandafter\def\expandafter\minted@optlistfv@cmd\expandafter{% 372 | \minted@optlistfv@cmd#1=##1,}% 373 | \@namedef{minted@opt@cmd:#1}{##1}} 374 | } 375 | \newcommand{\minted@def@optfv@switch}[1]{% 376 | \define@booleankey{minted@opt@g}{#1}% 377 | {\expandafter\def\expandafter\minted@optlistfv@g\expandafter{% 378 | \minted@optlistfv@g#1=true,}% 379 | \@namedef{minted@opt@g:#1}{true}}% 380 | {\expandafter\def\expandafter\minted@optlistfv@g\expandafter{% 381 | \minted@optlistfv@g#1=false,}% 382 | \@namedef{minted@opt@g:#1}{false}}% 383 | \define@booleankey{minted@opt@g@i}{#1}% 384 | {\expandafter\def\expandafter\minted@optlistfv@g@i\expandafter{% 385 | \minted@optlistfv@g@i#1=true,}% 386 | \@namedef{minted@opt@g@i:#1}{true}}% 387 | {\expandafter\def\expandafter\minted@optlistfv@g@i\expandafter{% 388 | \minted@optlistfv@g@i#1=false,}% 389 | \@namedef{minted@opt@g@i:#1}{false}}% 390 | \define@booleankey{minted@opt@lang}{#1}% 391 | {\expandafter\let\expandafter\minted@tmp% 392 | \csname minted@optlistfv@lang\minted@lang\endcsname 393 | \expandafter\def\expandafter\minted@tmp\expandafter{% 394 | \minted@tmp#1=true,}% 395 | \expandafter\let\csname minted@optlistfv@lang\minted@lang\endcsname% 396 | \minted@tmp 397 | \@namedef{minted@opt@lang\minted@lang:#1}{true}}% 398 | {\expandafter\let\expandafter\minted@tmp% 399 | \csname minted@optlistfv@lang\minted@lang\endcsname 400 | \expandafter\def\expandafter\minted@tmp\expandafter{% 401 | \minted@tmp#1=false,}% 402 | \expandafter\let\csname minted@optlistfv@lang\minted@lang\endcsname% 403 | \minted@tmp 404 | \@namedef{minted@opt@lang\minted@lang:#1}{false}}% 405 | \define@booleankey{minted@opt@lang@i}{#1}% 406 | {\expandafter\let\expandafter\minted@tmp% 407 | \csname minted@optlistfv@lang\minted@lang @i\endcsname 408 | \expandafter\def\expandafter\minted@tmp\expandafter{% 409 | \minted@tmp#1=true,}% 410 | \expandafter\let\csname minted@optlistfv@lang\minted@lang @i\endcsname% 411 | \minted@tmp 412 | \@namedef{minted@opt@lang\minted@lang @i:#1}{true}}% 413 | {\expandafter\let\expandafter\minted@tmp% 414 | \csname minted@optlistfv@lang\minted@lang @i\endcsname 415 | \expandafter\def\expandafter\minted@tmp\expandafter{% 416 | \minted@tmp#1=false,}% 417 | \expandafter\let\csname minted@optlistfv@lang\minted@lang @i\endcsname% 418 | \minted@tmp 419 | \@namedef{minted@opt@lang\minted@lang @i:#1}{false}}% 420 | \define@booleankey{minted@opt@cmd}{#1}% 421 | {\expandafter\def\expandafter\minted@optlistfv@cmd\expandafter{% 422 | \minted@optlistfv@cmd#1=true,}% 423 | \@namedef{minted@opt@cmd:#1}{true}}% 424 | {\expandafter\def\expandafter\minted@optlistfv@cmd\expandafter{% 425 | \minted@optlistfv@cmd#1=false,}% 426 | \@namedef{minted@opt@cmd:#1}{false}}% 427 | } 428 | \newboolean{minted@isinline} 429 | \newcommand{\minted@fvset}{% 430 | \expandafter\fvset\expandafter{\minted@optlistfv@g}% 431 | \expandafter\let\expandafter\minted@tmp% 432 | \csname minted@optlistfv@lang\minted@lang\endcsname 433 | \expandafter\fvset\expandafter{\minted@tmp}% 434 | \ifthenelse{\boolean{minted@isinline}}% 435 | {\expandafter\fvset\expandafter{\minted@optlistfv@g@i}% 436 | \expandafter\let\expandafter\minted@tmp% 437 | \csname minted@optlistfv@lang\minted@lang @i\endcsname 438 | \expandafter\fvset\expandafter{\minted@tmp}}% 439 | {}% 440 | \expandafter\fvset\expandafter{\minted@optlistfv@cmd}% 441 | } 442 | \newcommand{\minted@def@opt}[2][]{% 443 | \define@key{minted@opt@g}{#2}{% 444 | \@namedef{minted@opt@g:#2}{##1}} 445 | \define@key{minted@opt@g@i}{#2}{% 446 | \@namedef{minted@opt@g@i:#2}{##1}} 447 | \define@key{minted@opt@lang}{#2}{% 448 | \@namedef{minted@opt@lang\minted@lang:#2}{##1}} 449 | \define@key{minted@opt@lang@i}{#2}{% 450 | \@namedef{minted@opt@lang\minted@lang @i:#2}{##1}} 451 | \define@key{minted@opt@cmd}{#2}{% 452 | \@namedef{minted@opt@cmd:#2}{##1}} 453 | } 454 | \newcommand{\minted@def@opt@style}{% 455 | \define@key{minted@opt@g}{style}{% 456 | \minted@checkstyle{##1}% 457 | \@namedef{minted@opt@g:style}{##1}}% 458 | \define@key{minted@opt@g@i}{style}{% 459 | \minted@checkstyle{##1}% 460 | \@namedef{minted@opt@g@i:style}{##1}}% 461 | \define@key{minted@opt@lang}{style}{% 462 | \minted@checkstyle{##1}% 463 | \@namedef{minted@opt@lang\minted@lang:style}{##1}}% 464 | \define@key{minted@opt@lang@i}{style}{% 465 | \minted@checkstyle{##1}% 466 | \@namedef{minted@opt@lang\minted@lang @i:style}{##1}}% 467 | \define@key{minted@opt@cmd}{style}{% 468 | \minted@checkstyle{##1}% 469 | \@namedef{minted@opt@cmd:style}{##1}}% 470 | } 471 | \newcommand{\minted@checkstyle}[1]{% 472 | \ifcsname minted@styleloaded@\ifstrempty{#1}{default-pyg-prefix}{#1}\endcsname\else 473 | \expandafter\gdef% 474 | \csname minted@styleloaded@\ifstrempty{#1}{default-pyg-prefix}{#1}\endcsname{}% 475 | \ifthenelse{\boolean{minted@cache}}% 476 | {\IfFileExists 477 | {\minted@outputdir\minted@cachedir/\ifstrempty{#1}{default-pyg-prefix}{#1}.pygstyle}% 478 | {}% 479 | {% 480 | \ifwindows 481 | \immediate\write18{% 482 | \MintedPygmentize\space -S \ifstrempty{#1}{default}{#1} -f latex 483 | -P commandprefix=PYG#1 484 | > "\minted@outputdir@windows\minted@cachedir@windows\@backslashchar% 485 | \ifstrempty{#1}{default-pyg-prefix}{#1}.pygstyle"}% 486 | \else 487 | \immediate\write18{% 488 | \MintedPygmentize\space -S \ifstrempty{#1}{default}{#1} -f latex 489 | -P commandprefix=PYG#1 490 | > "\minted@outputdir\minted@cachedir/% 491 | \ifstrempty{#1}{default-pyg-prefix}{#1}.pygstyle"}% 492 | \fi 493 | }% 494 | \begingroup 495 | \let\def\gdef 496 | \endlinechar=-1\relax 497 | \minted@input{% 498 | \minted@outputdir\minted@cachedir/\ifstrempty{#1}{default-pyg-prefix}{#1}.pygstyle}% 499 | \endgroup 500 | \minted@addcachefile{\ifstrempty{#1}{default-pyg-prefix}{#1}.pygstyle}}% 501 | {\ifwindows 502 | \immediate\write18{% 503 | \MintedPygmentize\space -S \ifstrempty{#1}{default}{#1} -f latex 504 | -P commandprefix=PYG#1 > "\minted@outputdir@windows\minted@jobname.out.pyg"}% 505 | \else 506 | \immediate\write18{% 507 | \MintedPygmentize\space -S \ifstrempty{#1}{default}{#1} -f latex 508 | -P commandprefix=PYG#1 > "\minted@outputdir\minted@jobname.out.pyg"}% 509 | \fi 510 | \begingroup 511 | \let\def\gdef 512 | \endlinechar=-1\relax 513 | \minted@input{\minted@outputdir\minted@jobname.out.pyg}% 514 | \endgroup}% 515 | \fi 516 | } 517 | \ifthenelse{\boolean{minted@draft}}{\renewcommand{\minted@checkstyle}[1]{}}{} 518 | \AtBeginDocument{\minted@checkstyle{}} 519 | \newcommand{\minted@patch@PYGZsq}{% 520 | \ifcsname PYGZsq\endcsname 521 | \ifx\upquote@cmtt\minted@undefined\else 522 | \ifx\encodingdefault\upquote@OTone 523 | \ifx\ttdefault\upquote@cmtt 524 | \expandafter\ifdefstring\expandafter{\csname PYGZsq\endcsname}{\char`\'}% 525 | {\expandafter\gdef\csname PYGZsq\endcsname{\char13 }}{}% 526 | \else 527 | \expandafter\ifdefstring\expandafter{\csname PYGZsq\endcsname}{\char`\'}% 528 | {\expandafter\gdef\csname PYGZsq\endcsname{\textquotesingle}}{}% 529 | \fi 530 | \else 531 | \expandafter\ifdefstring\expandafter{\csname PYGZsq\endcsname}{\char`\'}% 532 | {\expandafter\gdef\csname PYGZsq\endcsname{\textquotesingle}}{}% 533 | \fi 534 | \fi 535 | \fi 536 | } 537 | \ifthenelse{\boolean{minted@draft}}{}{\AtBeginDocument{\minted@patch@PYGZsq}} 538 | \newcommand{\minted@def@opt@switch}[2][false]{% 539 | \define@booleankey{minted@opt@g}{#2}% 540 | {\@namedef{minted@opt@g:#2}{true}}% 541 | {\@namedef{minted@opt@g:#2}{false}} 542 | \define@booleankey{minted@opt@g@i}{#2}% 543 | {\@namedef{minted@opt@g@i:#2}{true}}% 544 | {\@namedef{minted@opt@g@i:#2}{false}} 545 | \define@booleankey{minted@opt@lang}{#2}% 546 | {\@namedef{minted@opt@lang\minted@lang:#2}{true}}% 547 | {\@namedef{minted@opt@lang\minted@lang:#2}{false}} 548 | \define@booleankey{minted@opt@lang@i}{#2}% 549 | {\@namedef{minted@opt@lang\minted@lang @i:#2}{true}}% 550 | {\@namedef{minted@opt@lang\minted@lang @i:#2}{false}} 551 | \define@booleankey{minted@opt@cmd}{#2}% 552 | {\@namedef{minted@opt@cmd:#2}{true}}% 553 | {\@namedef{minted@opt@cmd:#2}{false}}% 554 | \@namedef{minted@opt@g:#2}{#1}% 555 | } 556 | \def\minted@get@opt#1#2{% 557 | \ifcsname minted@opt@cmd:#1\endcsname 558 | \csname minted@opt@cmd:#1\endcsname 559 | \else 560 | \ifminted@isinline 561 | \ifcsname minted@opt@lang\minted@lang @i:#1\endcsname 562 | \csname minted@opt@lang\minted@lang @i:#1\endcsname 563 | \else 564 | \ifcsname minted@opt@g@i:#1\endcsname 565 | \csname minted@opt@g@i:#1\endcsname 566 | \else 567 | \ifcsname minted@opt@lang\minted@lang:#1\endcsname 568 | \csname minted@opt@lang\minted@lang:#1\endcsname 569 | \else 570 | \ifcsname minted@opt@g:#1\endcsname 571 | \csname minted@opt@g:#1\endcsname 572 | \else 573 | #2% 574 | \fi 575 | \fi 576 | \fi 577 | \fi 578 | \else 579 | \ifcsname minted@opt@lang\minted@lang:#1\endcsname 580 | \csname minted@opt@lang\minted@lang:#1\endcsname 581 | \else 582 | \ifcsname minted@opt@g:#1\endcsname 583 | \csname minted@opt@g:#1\endcsname 584 | \else 585 | #2% 586 | \fi 587 | \fi 588 | \fi 589 | \fi 590 | }% 591 | \minted@def@optcl{encoding}{-P encoding}{#1} 592 | \minted@def@optcl{outencoding}{-P outencoding}{#1} 593 | \minted@def@optcl@e{escapeinside}{-P "escapeinside}{#1"} 594 | \minted@def@optcl@switch{stripnl}{-P stripnl} 595 | \minted@def@optcl@switch{stripall}{-P stripall} 596 | \minted@def@optcl@switch{python3}{-P python3} 597 | \minted@def@optcl@switch{funcnamehighlighting}{-P funcnamehighlighting} 598 | \minted@def@optcl@switch{startinline}{-P startinline} 599 | \ifthenelse{\boolean{minted@draft}}% 600 | {\minted@def@optfv{gobble}}% 601 | {\minted@def@optcl{gobble}{-F gobble:n}{#1}} 602 | \minted@def@optcl{codetagify}{-F codetagify:codetags}{#1} 603 | \minted@def@optcl{keywordcase}{-F keywordcase:case}{#1} 604 | \minted@def@optcl@switch{texcl}{-P texcomments} 605 | \minted@def@optcl@switch{texcomments}{-P texcomments} 606 | \minted@def@optcl@switch{mathescape}{-P mathescape} 607 | \minted@def@optfv@switch{linenos} 608 | \minted@def@opt@style 609 | \minted@def@optfv{frame} 610 | \minted@def@optfv{framesep} 611 | \minted@def@optfv{framerule} 612 | \minted@def@optfv{rulecolor} 613 | \minted@def@optfv{numbersep} 614 | \minted@def@optfv{numbers} 615 | \minted@def@optfv{firstnumber} 616 | \minted@def@optfv{stepnumber} 617 | \minted@def@optfv{firstline} 618 | \minted@def@optfv{lastline} 619 | \minted@def@optfv{baselinestretch} 620 | \minted@def@optfv{xleftmargin} 621 | \minted@def@optfv{xrightmargin} 622 | \minted@def@optfv{fillcolor} 623 | \minted@def@optfv{tabsize} 624 | \minted@def@optfv{fontfamily} 625 | \minted@def@optfv{fontsize} 626 | \minted@def@optfv{fontshape} 627 | \minted@def@optfv{fontseries} 628 | \minted@def@optfv{formatcom} 629 | \minted@def@optfv{label} 630 | \minted@def@optfv@switch{numberblanklines} 631 | \minted@def@optfv@switch{showspaces} 632 | \minted@def@optfv@switch{resetmargins} 633 | \minted@def@optfv@switch{samepage} 634 | \minted@def@optfv@switch{showtabs} 635 | \minted@def@optfv@switch{obeytabs} 636 | \minted@def@optfv@switch{breaklines} 637 | \minted@def@optfv{breakindent} 638 | \minted@def@optfv@switch{breakautoindent} 639 | \minted@def@optfv{breaksymbol} 640 | \minted@def@optfv{breaksymbolsep} 641 | \minted@def@optfv{breaksymbolindent} 642 | \minted@def@optfv{breaksymbolleft} 643 | \minted@def@optfv{breaksymbolsepleft} 644 | \minted@def@optfv{breaksymbolindentleft} 645 | \minted@def@optfv{breaksymbolright} 646 | \minted@def@optfv{breaksymbolsepright} 647 | \minted@def@optfv{breaksymbolindentright} 648 | \minted@def@optfv{breakafter} 649 | \minted@def@optfv@switch{breakaftergroup} 650 | \minted@def@optfv{breakaftersymbolpre} 651 | \minted@def@optfv{breakaftersymbolpost} 652 | \minted@def@optfv@switch{breakanywhere} 653 | \minted@def@optfv{breakanywheresymbolpre} 654 | \minted@def@optfv{breakanywheresymbolpost} 655 | \minted@def@opt@switch{breakbytoken} 656 | \minted@def@opt@switch{breakbytokenanywhere} 657 | \minted@def@opt{bgcolor} 658 | \minted@def@opt@switch{autogobble} 659 | \newcommand{\minted@encoding}{\minted@get@opt{encoding}{UTF8}} 660 | \ifcsname KV@FV@breaklines\endcsname\else 661 | \newboolean{FV@BreakLines} 662 | \let\FV@ListProcessLine@Orig\FV@ListProcessLine 663 | \define@booleankey{FV}{breaklines}% 664 | {\FV@BreakLinestrue 665 | \let\FV@ListProcessLine\FV@ListProcessLine@Break}% 666 | {\FV@BreakLinesfalse 667 | \let\FV@ListProcessLine\FV@ListProcessLine@Orig} 668 | \newdimen\FV@BreakIndent 669 | \define@key{FV}{breakindent}{\FV@BreakIndent=#1} 670 | \fvset{breakindent=0pt} 671 | \newboolean{FV@BreakAutoIndent} 672 | \define@booleankey{FV}{breakautoindent}% 673 | {\FV@BreakAutoIndenttrue}{\FV@BreakAutoIndentfalse} 674 | \fvset{breakautoindent=true} 675 | \define@key{FV}{breaksymbolleft}{\def\FancyVerbBreakSymbolLeft{#1}} 676 | \define@key{FV}{breaksymbol}{\fvset{breaksymbolleft=#1}} 677 | \fvset{breaksymbolleft=\tiny\ensuremath{\hookrightarrow}} 678 | \define@key{FV}{breaksymbolright}{\def\FancyVerbBreakSymbolRight{#1}} 679 | \fvset{breaksymbolright={}} 680 | \newdimen\FV@BreakSymbolSepLeft 681 | \define@key{FV}{breaksymbolsepleft}{\FV@BreakSymbolSepLeft=#1} 682 | \define@key{FV}{breaksymbolsep}{\fvset{breaksymbolsepleft=#1}} 683 | \fvset{breaksymbolsepleft=1em} 684 | \newdimen\FV@BreakSymbolSepRight 685 | \define@key{FV}{breaksymbolsepright}{\FV@BreakSymbolSepRight=#1} 686 | \fvset{breaksymbolsepright=1em} 687 | \newdimen\FV@BreakSymbolIndentLeft 688 | \settowidth{\FV@BreakSymbolIndentLeft}{\ttfamily xxxx} 689 | \define@key{FV}{breaksymbolindentleft}{\FV@BreakSymbolIndentLeft=#1} 690 | \define@key{FV}{breaksymbolindent}{\fvset{breaksymbolindentleft=#1}} 691 | \newdimen\FV@BreakSymbolIndentRight 692 | \settowidth{\FV@BreakSymbolIndentRight}{\ttfamily xxxx} 693 | \define@key{FV}{breaksymbolindentright}{\FV@BreakSymbolIndentRight=#1} 694 | \newcommand{\FancyVerbFormatBreakSymbolLeft}[1]{% 695 | \ifnum\value{linenumber}=1\relax\else{#1}\fi} 696 | \newcounter{FancyVerbLineBreakLast} 697 | \newcommand{\FV@SetLineBreakLast}{% 698 | \setcounter{FancyVerbLineBreakLast}{\value{linenumber}}} 699 | \newcommand{\FancyVerbFormatBreakSymbolRight}[1]{% 700 | \ifnum\value{linenumber}=\value{FancyVerbLineBreakLast}\relax\else{#1}\fi} 701 | \newboolean{FV@BreakAnywhere} 702 | \define@booleankey{FV}{breakanywhere}% 703 | {\FV@BreakAnywheretrue 704 | \let\FancyVerbBreakStart\FV@Break 705 | \let\FancyVerbBreakStop\FV@EndBreak 706 | \let\FV@Break@Token\FV@Break@AnyToken}% 707 | {\FV@BreakAnywherefalse 708 | \let\FancyVerbBreakStart\relax 709 | \let\FancyVerbBreakStop\relax} 710 | \fvset{breakanywhere=false} 711 | \let\FancyVerbBreakStart\relax 712 | \let\FancyVerbBreakStop\relax 713 | \edef\FV@hashchar{\string#} 714 | \edef\FV@dollarchar{\string$} 715 | \edef\FV@ampchar{\string&} 716 | \edef\FV@underscorechar{\string_} 717 | \edef\FV@tildechar{\string~} 718 | \edef\FV@leftsquarebracket{\string[} 719 | \edef\FV@rightsquarebracket{\string]} 720 | \newcommand{\FV@EscChars}{% 721 | \let\#\FV@hashchar 722 | \let\%\@percentchar 723 | \let\{\@charlb 724 | \let\}\@charrb 725 | \let\$\FV@dollarchar 726 | \let\&\FV@ampchar 727 | \let\_\FV@underscorechar 728 | \let\\\@backslashchar 729 | \let~\FV@tildechar 730 | \let\~\FV@tildechar 731 | \let\[\FV@leftsquarebracket 732 | \let\]\FV@rightsquarebracket 733 | } %$ <- highlighting 734 | \define@key{FV}{breakafter}{% 735 | \ifstrempty{#1}% 736 | {\let\FV@BreakAfter\@empty 737 | \let\FancyVerbBreakStart\relax 738 | \let\FancyVerbBreakStop\relax}% 739 | {\def\FV@BreakAfter{#1}% 740 | \let\FancyVerbBreakStart\FV@Break 741 | \let\FancyVerbBreakStop\FV@EndBreak 742 | \let\FV@Break@Token\FV@Break@AfterToken}% 743 | } 744 | \fvset{breakafter={}} 745 | \newboolean{FV@BreakAfterGroup} 746 | \define@booleankey{FV}{breakaftergroup}% 747 | {\FV@BreakAfterGrouptrue}% 748 | {\FV@BreakAfterGroupfalse}% 749 | \fvset{breakaftergroup=true} 750 | \def\FV@BreakAfterPrep{% 751 | \ifx\FV@BreakAfter\@empty\relax 752 | \else 753 | \gdef\FV@BreakAfter@Def{}% 754 | \begingroup 755 | \def\FV@BreakAfter@Process##1##2\FV@Undefined{% 756 | \expandafter\FV@BreakAfter@Process@i\expandafter{##1}% 757 | \expandafter\ifx\expandafter\relax\detokenize{##2}\relax 758 | \else 759 | \FV@BreakAfter@Process##2\FV@Undefined 760 | \fi 761 | }% 762 | \def\FV@BreakAfter@Process@i##1{% 763 | \g@addto@macro\FV@BreakAfter@Def{% 764 | \@namedef{FV@BreakAfter@Token\detokenize{##1}}{}}% 765 | }% 766 | \FV@EscChars 767 | \expandafter\FV@BreakAfter@Process\FV@BreakAfter\FV@Undefined 768 | \endgroup 769 | \FV@BreakAfter@Def 770 | \fi 771 | } 772 | \expandafter\def\expandafter\FV@FormattingPrep\expandafter{% 773 | \expandafter\FV@BreakAfterPrep\FV@FormattingPrep} 774 | \define@key{FV}{breakanywheresymbolpre}{% 775 | \ifstrempty{#1}% 776 | {\def\FancyVerbBreakAnywhereSymbolPre{}}% 777 | {\def\FancyVerbBreakAnywhereSymbolPre{\hbox{#1}}}} 778 | \fvset{breakanywheresymbolpre={\,\footnotesize\ensuremath{_\rfloor}}} 779 | \define@key{FV}{breakanywheresymbolpost}{% 780 | \ifstrempty{#1}% 781 | {\def\FancyVerbBreakAnywhereSymbolPost{}}% 782 | {\def\FancyVerbBreakAnywhereSymbolPost{\hbox{#1}}}} 783 | \fvset{breakanywheresymbolpost={}} 784 | \define@key{FV}{breakaftersymbolpre}{% 785 | \ifstrempty{#1}% 786 | {\def\FancyVerbBreakAfterSymbolPre{}}% 787 | {\def\FancyVerbBreakAfterSymbolPre{\hbox{#1}}}} 788 | \fvset{breakaftersymbolpre={\,\footnotesize\ensuremath{_\rfloor}}} 789 | \define@key{FV}{breakaftersymbolpost}{% 790 | \ifstrempty{#1}% 791 | {\def\FancyVerbBreakAfterSymbolPost{}}% 792 | {\def\FancyVerbBreakAfterSymbolPost{\hbox{#1}}}} 793 | \fvset{breakaftersymbolpost={}} 794 | \newcommand{\FancyVerbBreakAnywhereBreak}{% 795 | \discretionary{\FancyVerbBreakAnywhereSymbolPre}% 796 | {\FancyVerbBreakAnywhereSymbolPost}{}} 797 | \newcommand{\FancyVerbBreakAfterBreak}{% 798 | \discretionary{\FancyVerbBreakAfterSymbolPre}% 799 | {\FancyVerbBreakAfterSymbolPost}{}} 800 | \newsavebox{\FV@LineBox} 801 | \newsavebox{\FV@LineIndentBox} 802 | \let\FV@LineIndentChars\@empty 803 | \def\FV@GetNextChar{\let\FV@NextChar=} 804 | \def\FV@CleanRemainingChars#1\FV@Undefined{} 805 | \def\FV@GetLineIndent{\afterassignment\FV@CheckIndentChar\FV@GetNextChar} 806 | \def\FV@CheckIndentChar{% 807 | \ifx\FV@NextChar\FV@Undefined 808 | \let\FV@Next=\relax 809 | \else 810 | \expandafter\ifx\FV@NextChar\FV@Space 811 | \g@addto@macro{\FV@LineIndentChars}{\FV@Space}% 812 | \let\FV@Next=\FV@GetLineIndent 813 | \else 814 | \expandafter\ifx\FV@NextChar\FV@Tab 815 | \g@addto@macro{\FV@LineIndentChars}{\FV@Tab}% 816 | \let\FV@Next=\FV@GetLineIndent 817 | \else 818 | \let\FV@Next=\FV@CleanRemainingChars 819 | \fi 820 | \fi 821 | \fi 822 | \FV@Next 823 | } 824 | \def\FV@Break{% 825 | \def\FV@Tmp{}% 826 | \FV@Break@Scan 827 | } 828 | \def\FV@EndBreak{\FV@Tmp} 829 | \begingroup 830 | \catcode`\$=3% 831 | \gdef\FV@Break@Scan{% 832 | \@ifnextchar\FV@EndBreak% 833 | {}% 834 | {\ifx\@let@token$\relax 835 | \let\FV@Break@Next\FV@Break@Math 836 | \else 837 | \ifx\@let@token\bgroup\relax 838 | \let\FV@Break@Next\FV@Break@Group 839 | \else 840 | \let\FV@Break@Next\FV@Break@Token 841 | \fi 842 | \fi 843 | \FV@Break@Next}% 844 | } 845 | \endgroup 846 | \begingroup 847 | \catcode`\$=3% 848 | \gdef\FV@Break@Math$#1${% 849 | \g@addto@macro{\FV@Tmp}{$#1$}% 850 | \FV@Break@Scan} 851 | \endgroup 852 | \def\FV@Break@Group#1{% 853 | \g@addto@macro{\FV@Tmp}{{#1}}% 854 | \FV@Break@Scan} 855 | \def\FV@Break@AnyToken#1{% 856 | \g@addto@macro{\FV@Tmp}{\FancyVerbBreakAnywhereBreak#1}% 857 | \FV@Break@Scan} 858 | \def\FV@Break@AfterToken#1{% 859 | \ifcsname FV@BreakAfter@Token\detokenize{#1}\endcsname 860 | \let\FV@Break@Next\FV@Break@AfterTokenBreak 861 | \else 862 | \let\FV@Break@Next\FV@Break@AfterTokenNoBreak 863 | \fi 864 | \FV@Break@Next{#1}% 865 | } 866 | \def\FV@Break@AfterTokenNoBreak#1{% 867 | \g@addto@macro{\FV@Tmp}{#1}% 868 | \FV@Break@Scan} 869 | \def\FV@Break@AfterTokenBreak#1{% 870 | \@ifnextchar\FV@Space% 871 | {\g@addto@macro{\FV@Tmp}{#1}\FV@Break@Scan}% 872 | {\ifthenelse{\boolean{FV@BreakAfterGroup}}% 873 | {\ifx\@let@token#1\relax 874 | \g@addto@macro{\FV@Tmp}{#1}% 875 | \let\FV@Break@Next\FV@Break@Scan 876 | \else 877 | \ifx\@let@token\bgroup\relax 878 | \g@addto@macro{\FV@Tmp}{#1}% 879 | \let\FV@TmpToken#1% 880 | \let\FV@Break@Next\FV@Break@AfterTokenBreak@Group 881 | \else 882 | \g@addto@macro{\FV@Tmp}{#1\FancyVerbBreakAfterBreak}% 883 | \let\FV@Break@Next\FV@Break@Scan 884 | \fi 885 | \fi}% 886 | {\g@addto@macro{\FV@Tmp}{#1\FancyVerbBreakAfterBreak}% 887 | \let\FV@Break@Next\FV@Break@Scan}% 888 | \FV@Break@Next}% 889 | } 890 | \def\FV@Break@AfterTokenBreak@Group#1{% 891 | \g@addto@macro{\FV@Tmp}{{#1}}% 892 | \ifstrempty{#1}% 893 | {\let\FV@Break@Next\FV@Break@AfterTokenBreak@Group@i}% 894 | {\let\FV@Break@Next\FV@Break@Scan}% 895 | \FV@Break@Next} 896 | \def\FV@Break@AfterTokenBreak@Group@i{% 897 | \@ifnextchar\FV@TmpToken% 898 | {\FV@Break@Scan}% 899 | {\g@addto@macro{\FV@Tmp}{\FancyVerbBreakAfterBreak}% 900 | \FV@Break@Scan}} 901 | \def\FV@makeLineNumber{% 902 | \hss 903 | \FancyVerbFormatBreakSymbolLeft{\FancyVerbBreakSymbolLeft}% 904 | \hbox to \FV@BreakSymbolSepLeft{\hfill}% 905 | \rlap{\hskip\linewidth 906 | \hbox to \FV@BreakSymbolSepRight{\hfill}% 907 | \FancyVerbFormatBreakSymbolRight{\FancyVerbBreakSymbolRight}% 908 | \FV@SetLineBreakLast 909 | }% 910 | } 911 | \def\FV@SaveLineBox#1{% 912 | \savebox{\FV@LineBox}{% 913 | \advance\linewidth by -\FV@BreakIndent 914 | \hbox to \FV@BreakIndent{\hfill}% 915 | \ifthenelse{\boolean{FV@BreakAutoIndent}}% 916 | {\let\FV@LineIndentChars\@empty 917 | \FV@GetLineIndent#1\FV@Undefined 918 | \savebox{\FV@LineIndentBox}{\FV@LineIndentChars}% 919 | \hbox to \wd\FV@LineIndentBox{\hfill}% 920 | \advance\linewidth by -\wd\FV@LineIndentBox}% 921 | {}% 922 | \ifdefempty{\FancyVerbBreakSymbolLeft}{}% 923 | {\hbox to \FV@BreakSymbolIndentLeft{\hfill}% 924 | \advance\linewidth by -\FV@BreakSymbolIndentLeft}% 925 | \ifdefempty{\FancyVerbBreakSymbolRight}{}% 926 | {\advance\linewidth by -\FV@BreakSymbolIndentRight}% 927 | \parbox[t]{\linewidth}{% 928 | \raggedright 929 | \leftlinenumbers* 930 | \begin{internallinenumbers*}% 931 | \let\makeLineNumber\FV@makeLineNumber 932 | \noindent\hspace*{-\FV@BreakIndent}% 933 | \ifdefempty{\FancyVerbBreakSymbolLeft}{}{% 934 | \hspace*{-\FV@BreakSymbolIndentLeft}}% 935 | \ifthenelse{\boolean{FV@BreakAutoIndent}}% 936 | {\hspace*{-\wd\FV@LineIndentBox}}% 937 | {}% 938 | \strut#1\nobreak\strut 939 | \end{internallinenumbers*} 940 | }% 941 | \ifdefempty{\FancyVerbBreakSymbolRight}{}% 942 | {\hbox to \FV@BreakSymbolIndentRight{\hfill}}% 943 | }% 944 | } 945 | \def\FancyVerbFormatText#1{#1} 946 | \def\FV@ListProcessLine@Break#1{% 947 | \hbox to \hsize{% 948 | \kern\leftmargin 949 | \hbox to \linewidth{% 950 | \ifx\FV@RightListFrame\relax\else 951 | \advance\linewidth by -\FV@FrameSep 952 | \advance\linewidth by -\FV@FrameRule 953 | \fi 954 | \ifx\FV@LeftListFrame\relax\else 955 | \advance\linewidth by -\FV@FrameSep 956 | \advance\linewidth by -\FV@FrameRule 957 | \fi 958 | \sbox{\FV@LineBox}{\FancyVerbFormatLine{\FancyVerbFormatText{#1}}}% 959 | \ifdim\wd\FV@LineBox>\linewidth 960 | \setcounter{FancyVerbLineBreakLast}{0}% 961 | \FV@SaveLineBox{\FancyVerbFormatText{% 962 | \FancyVerbBreakStart#1\FancyVerbBreakStop}}% 963 | \ifdefempty{\FancyVerbBreakSymbolRight}{}{% 964 | \let\FV@SetLineBreakLast\relax 965 | \FV@SaveLineBox{\FancyVerbFormatText{% 966 | \FancyVerbBreakStart#1\FancyVerbBreakStop}}}% 967 | \FV@LeftListNumber 968 | \FV@LeftListFrame 969 | \FancyVerbFormatLine{\usebox{\FV@LineBox}}% 970 | \FV@RightListFrame 971 | \FV@RightListNumber 972 | \else 973 | \FV@LeftListNumber 974 | \FV@LeftListFrame 975 | \FancyVerbFormatLine{% 976 | \parbox[t]{\linewidth}{\noindent\strut\FancyVerbFormatText{#1}\strut}}% 977 | \FV@RightListFrame 978 | \FV@RightListNumber 979 | \fi}% 980 | \hss}\baselineskip\z@\lineskip\z@} 981 | \ifcsname KV@FV@linenos\endcsname\else 982 | \define@booleankey{FV}{linenos}% 983 | {\@nameuse{FV@Numbers@left}}{\@nameuse{FV@Numbers@none}} 984 | \fi 985 | \fi 986 | \newsavebox{\minted@bgbox} 987 | \newenvironment{minted@colorbg}[1]{ 988 | %\setlength{\fboxsep}{-\fboxrule} 989 | \def\minted@bgcol{#1} 990 | \noindent 991 | \begin{lrbox}{\minted@bgbox} 992 | \begin{minipage}{\linewidth-2\fboxsep}} 993 | {\end{minipage} 994 | \end{lrbox}% 995 | \colorbox{\minted@bgcol}{\usebox{\minted@bgbox}}} 996 | \newwrite\minted@code 997 | \newcommand{\minted@savecode}[1]{ 998 | \immediate\openout\minted@code\minted@jobname.pyg\relax 999 | \immediate\write\minted@code{\expandafter\detokenize\expandafter{#1}}% 1000 | \immediate\closeout\minted@code} 1001 | \newcounter{minted@FancyVerbLineTemp} 1002 | \newcommand{\minted@write@detok}[1]{% 1003 | \immediate\write\FV@OutFile{\detokenize{#1}}} 1004 | \newcommand{\minted@FVB@VerbatimOut}[1]{% 1005 | \setcounter{minted@FancyVerbLineTemp}{\value{FancyVerbLine}}% 1006 | \@bsphack 1007 | \begingroup 1008 | \FV@UseKeyValues 1009 | \FV@DefineWhiteSpace 1010 | \def\FV@Space{\space}% 1011 | \FV@DefineTabOut 1012 | \let\FV@ProcessLine\minted@write@detok 1013 | \immediate\openout\FV@OutFile #1\relax 1014 | \let\FV@FontScanPrep\relax 1015 | \let\@noligs\relax 1016 | \FV@Scan} 1017 | \newcommand{\minted@FVE@VerbatimOut}{% 1018 | \immediate\closeout\FV@OutFile\endgroup\@esphack 1019 | \setcounter{FancyVerbLine}{\value{minted@FancyVerbLineTemp}}}% 1020 | \ifcsname MintedPygmentize\endcsname\else 1021 | \newcommand{\MintedPygmentize}{pygmentize} 1022 | \fi 1023 | \newcommand{\minted@pygmentize}[2][\minted@outputdir\minted@jobname.pyg]{% 1024 | \ifthenelse{\equal{\minted@get@opt{autogobble}{false}}{true}}% 1025 | {\def\minted@codefile{\minted@outputdir\minted@jobname.pyg}}% 1026 | {\def\minted@codefile{#1}}% 1027 | \ifthenelse{\boolean{minted@isinline}}% 1028 | {\def\minted@optlistcl@inlines{% 1029 | \minted@optlistcl@g@i 1030 | \csname minted@optlistcl@lang\minted@lang @i\endcsname}}% 1031 | {\let\minted@optlistcl@inlines\@empty}% 1032 | \def\minted@cmd{% 1033 | \ifminted@kpsewhich\ifwindows powershell\space\fi\fi 1034 | \MintedPygmentize\space -l #2 1035 | -f latex -P commandprefix=PYG -F tokenmerge 1036 | \minted@optlistcl@g \csname minted@optlistcl@lang\minted@lang\endcsname 1037 | \minted@optlistcl@inlines 1038 | \minted@optlistcl@cmd -o "\minted@outputdir\minted@infile" 1039 | \ifminted@kpsewhich 1040 | \ifwindows 1041 | \detokenize{$}(kpsewhich "\minted@codefile")% 1042 | \else 1043 | \detokenize{`}kpsewhich "\minted@codefile" 1044 | \detokenize{||} "\minted@codefile"\detokenize{`}% 1045 | \fi 1046 | \else 1047 | "\minted@codefile" 1048 | \fi}% 1049 | % For debugging, uncomment: %%%% 1050 | % \immediate\typeout{\minted@cmd}% 1051 | % %%%% 1052 | \ifthenelse{\boolean{minted@cache}}% 1053 | {% 1054 | \ifx\XeTeXinterchartoks\minted@undefined 1055 | \ifthenelse{\equal{\minted@get@opt{autogobble}{false}}{true}}% 1056 | {\edef\minted@hash{\pdf@filemdfivesum{#1}% 1057 | \pdf@mdfivesum{\minted@cmd autogobble}}}% 1058 | {\edef\minted@hash{\pdf@filemdfivesum{#1}% 1059 | \pdf@mdfivesum{\minted@cmd}}}% 1060 | \else 1061 | \immediate\openout\minted@code\minted@jobname.mintedcmd\relax 1062 | \immediate\write\minted@code{\minted@cmd}% 1063 | \ifthenelse{\equal{\minted@get@opt{autogobble}{false}}{true}}% 1064 | {\immediate\write\minted@code{autogobble}}{}% 1065 | \immediate\closeout\minted@code 1066 | %Cheating a little here by using ASCII codes to write `{` and `}` 1067 | %in the Python code 1068 | \def\minted@hashcmd{% 1069 | \detokenize{python -c "import hashlib; 1070 | hasher = hashlib.sha1(); 1071 | f = open(\"}\minted@outputdir\minted@jobname.mintedcmd\detokenize{\", \"rb\"); 1072 | hasher.update(f.read()); 1073 | f.close(); 1074 | f = open(\"}#1\detokenize{\", \"rb\"); 1075 | hasher.update(f.read()); 1076 | f.close(); 1077 | f = open(\"}\minted@outputdir\minted@jobname.mintedmd5\detokenize{\", \"w\"); 1078 | macro = \"\\edef\\minted@hash\" + chr(123) + hasher.hexdigest() + chr(125) + \"\"; 1079 | f.write(\"\\makeatletter\" + macro + \"\\makeatother\\endinput\n\"); 1080 | f.close();"}}% 1081 | \immediate\write18{\minted@hashcmd}% 1082 | \minted@input{\minted@outputdir\minted@jobname.mintedmd5}% 1083 | \fi 1084 | \edef\minted@infile{\minted@cachedir/\minted@hash.pygtex}% 1085 | \IfFileExists{\minted@infile}{}{% 1086 | \ifthenelse{\equal{\minted@get@opt{autogobble}{false}}{true}}{% 1087 | %Need a version of open() that supports encoding under Python 2 1088 | \edef\minted@autogobblecmd{% 1089 | \detokenize{python -c "import sys; 1090 | import textwrap; 1091 | from io import open; 1092 | f = open(\"}#1\detokenize{\", \"r\", encoding=\"}\minted@encoding\detokenize{\"); 1093 | t = f.read(); 1094 | f.close(); 1095 | f = open(\"}\minted@outputdir\minted@jobname.pyg\detokenize{\", \"w\", encoding=\"}\minted@encoding\detokenize{\"); 1096 | f.write(textwrap.dedent(t)); 1097 | f.close();"}% 1098 | }% 1099 | \immediate\write18{\minted@autogobblecmd}}{}% 1100 | \immediate\write18{\minted@cmd}}% 1101 | \expandafter\minted@addcachefile\expandafter{\minted@hash.pygtex}% 1102 | \minted@inputpyg}% 1103 | {% 1104 | \ifthenelse{\equal{\minted@get@opt{autogobble}{false}}{true}}{% 1105 | %Need a version of open() that supports encoding under Python 2 1106 | \edef\minted@autogobblecmd{% 1107 | \detokenize{python -c "import sys; 1108 | import textwrap; 1109 | from io import open; 1110 | f = open(\"}#1\detokenize{\", \"r\", encoding=\"}\minted@encoding\detokenize{\"); 1111 | t = f.read(); 1112 | f.close(); 1113 | f = open(\"}\minted@outputdir\minted@jobname.pyg\detokenize{\", \"w\", encoding=\"}\minted@encoding\detokenize{\"); 1114 | f.write(textwrap.dedent(t)); 1115 | f.close();"}% 1116 | }% 1117 | \immediate\write18{\minted@autogobblecmd}}{}% 1118 | \immediate\write18{\minted@cmd}% 1119 | \minted@inputpyg}% 1120 | } 1121 | \def\FV@SpaceMMode{ } 1122 | \def\minted@BreakAfterPrep@extension{% 1123 | \ifcsname FV@BreakAfter@Token\@backslashchar\endcsname 1124 | \@namedef{FV@BreakAfter@Token\detokenize{\PYGZbs}}{}% 1125 | \fi 1126 | \ifcsname FV@BreakAfter@Token\FV@underscorechar\endcsname 1127 | \@namedef{FV@BreakAfter@Token\detokenize{\PYGZus}}{}% 1128 | \fi 1129 | \ifcsname FV@BreakAfter@Token\@charlb\endcsname 1130 | \@namedef{FV@BreakAfter@Token\detokenize{\PYGZob}}{}% 1131 | \fi 1132 | \ifcsname FV@BreakAfter@Token\@charrb\endcsname 1133 | \@namedef{FV@BreakAfter@Token\detokenize{\PYGZcb}}{}% 1134 | \fi 1135 | \ifcsname FV@BreakAfter@Token\detokenize{^}\endcsname 1136 | \@namedef{FV@BreakAfter@Token\detokenize{\PYGZca}}{}% 1137 | \fi 1138 | \ifcsname FV@BreakAfter@Token\FV@ampchar\endcsname 1139 | \@namedef{FV@BreakAfter@Token\detokenize{\PYGZam}}{}% 1140 | \fi 1141 | \ifcsname FV@BreakAfter@Token\detokenize{<}\endcsname 1142 | \@namedef{FV@BreakAfter@Token\detokenize{\PYGZlt}}{}% 1143 | \fi 1144 | \ifcsname FV@BreakAfter@Token\detokenize{>}\endcsname 1145 | \@namedef{FV@BreakAfter@Token\detokenize{\PYGZgt}}{}% 1146 | \fi 1147 | \ifcsname FV@BreakAfter@Token\FV@hashchar\endcsname 1148 | \@namedef{FV@BreakAfter@Token\detokenize{\PYGZsh}}{}% 1149 | \fi 1150 | \ifcsname FV@BreakAfter@Token\@percentchar\endcsname 1151 | \@namedef{FV@BreakAfter@Token\detokenize{\PYGZpc}}{}% 1152 | \fi 1153 | \ifcsname FV@BreakAfter@Token\FV@dollarchar\endcsname 1154 | \@namedef{FV@BreakAfter@Token\detokenize{\PYGZdl}}{}% 1155 | \fi 1156 | \ifcsname FV@BreakAfter@Token\detokenize{-}\endcsname 1157 | \@namedef{FV@BreakAfter@Token\detokenize{\PYGZhy}}{}% 1158 | \fi 1159 | \ifcsname FV@BreakAfter@Token\detokenize{'}\endcsname 1160 | \@namedef{FV@BreakAfter@Token\detokenize{\PYGZsq}}{}% 1161 | \fi 1162 | \ifcsname FV@BreakAfter@Token\detokenize{"}\endcsname 1163 | \@namedef{FV@BreakAfter@Token\detokenize{\PYGZdq}}{}% 1164 | \fi 1165 | \ifcsname FV@BreakAfter@Token\FV@tildechar\endcsname 1166 | \@namedef{FV@BreakAfter@Token\detokenize{\PYGZti}}{}% 1167 | \fi 1168 | \ifcsname FV@BreakAfter@Token\detokenize{@}\endcsname 1169 | \@namedef{FV@BreakAfter@Token\detokenize{\PYGZat}}{}% 1170 | \fi 1171 | \ifcsname FV@BreakAfter@Token\detokenize{[}\endcsname 1172 | \@namedef{FV@BreakAfter@Token\detokenize{\PYGZlb}}{}% 1173 | \fi 1174 | \ifcsname FV@BreakAfter@Token\detokenize{]}\endcsname 1175 | \@namedef{FV@BreakAfter@Token\detokenize{\PYGZrb}}{}% 1176 | \fi 1177 | } 1178 | \newcommand{\minted@inputpyg}{% 1179 | \let\FV@BreakAfterPrep@orig\FV@BreakAfterPrep 1180 | \def\FV@BreakAfterPrep{% 1181 | \FV@BreakAfterPrep@orig\minted@BreakAfterPrep@extension}% 1182 | \everymath\expandafter{\the\everymath\let\FV@Space\FV@SpaceMMode}% 1183 | \ifthenelse{\equal{\minted@get@opt{breakbytokenanywhere}{false}}{true}}% 1184 | {\setkeys{minted@opt@cmd}{breakbytoken=true}}{}% 1185 | \ifthenelse{\boolean{FV@BreakAnywhere}}% 1186 | {\expandafter\let\expandafter\minted@orig@PYG@breakanywhere% 1187 | \csname PYG\minted@get@opt{style}{default}\endcsname 1188 | \expandafter\def\csname PYG\minted@get@opt{style}{default}\endcsname##1##2{% 1189 | \minted@orig@PYG@breakanywhere{##1}% 1190 | {\FancyVerbBreakStart##2\FancyVerbBreakStop}}}{}% 1191 | \ifx\FV@BreakAfter\@empty 1192 | \else 1193 | \expandafter\let\expandafter\minted@orig@PYG@breakafter% 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@breakafter{##1}% 1197 | {\FancyVerbBreakStart##2\FancyVerbBreakStop}}% 1198 | \fi 1199 | \ifthenelse{\boolean{minted@isinline}}% 1200 | {\ifthenelse{\equal{\minted@get@opt{breaklines}{false}}{true}}% 1201 | {\let\FV@BeginVBox\relax 1202 | \let\FV@EndVBox\relax 1203 | \def\FV@BProcessLine##1{\FancyVerbFormatLine{##1}}% 1204 | \ifthenelse{\equal{\minted@get@opt{breakbytoken}{false}}{true}}% 1205 | {\minted@inputpyg@breakbytoken 1206 | \minted@inputpyg@inline}% 1207 | {\minted@inputpyg@inline}}% 1208 | {\minted@inputpyg@inline}}% 1209 | {\ifthenelse{\equal{\minted@get@opt{breaklines}{false}}{true}}% 1210 | {\ifthenelse{\equal{\minted@get@opt{breakbytoken}{false}}{true}}% 1211 | {\minted@inputpyg@breakbytoken 1212 | \minted@inputpyg@block}% 1213 | {\minted@inputpyg@block}}% 1214 | {\minted@inputpyg@block}}% 1215 | } 1216 | \def\minted@inputpyg@breakbytoken{% 1217 | \expandafter\let\expandafter\minted@orig@PYG@breakbytoken% 1218 | \csname PYG\minted@get@opt{style}{default}\endcsname 1219 | \ifthenelse{\equal{\minted@get@opt{breakbytokenanywhere}{false}}{true}}% 1220 | {\let\minted@orig@allowbreak\allowbreak 1221 | \def\allowbreak{\let\allowbreak\minted@orig@allowbreak}% 1222 | \expandafter\def\csname PYG\minted@get@opt{style}{default}\endcsname##1##2{% 1223 | \allowbreak{}\leavevmode\hbox{\minted@orig@PYG@breakbytoken{##1}{##2}}}}% 1224 | {\expandafter\def\csname PYG\minted@get@opt{style}{default}\endcsname##1##2{% 1225 | \leavevmode\hbox{\minted@orig@PYG@breakbytoken{##1}{##2}}}}% 1226 | } 1227 | \def\minted@inputpyg@inline{% 1228 | \expandafter\let\expandafter\PYG% 1229 | \csname PYG\minted@get@opt{style}{default}\endcsname 1230 | \ifthenelse{\equal{\minted@get@opt{bgcolor}{}}{}}% 1231 | {\minted@input{\minted@outputdir\minted@infile}}% 1232 | {\colorbox{\minted@get@opt{bgcolor}{}}{% 1233 | \minted@input{\minted@outputdir\minted@infile}}}% 1234 | } 1235 | \def\minted@inputpyg@block{% 1236 | \expandafter\let\expandafter\PYG% 1237 | \csname PYG\minted@get@opt{style}{default}\endcsname 1238 | \ifthenelse{\equal{\minted@get@opt{bgcolor}{}}{}}% 1239 | {\minted@input{\minted@outputdir\minted@infile}}% 1240 | {\begin{minted@colorbg}{\minted@get@opt{bgcolor}{}}% 1241 | \minted@input{\minted@outputdir\minted@infile}% 1242 | \end{minted@colorbg}}} 1243 | \newcommand{\minted@langlinenoson}{% 1244 | \ifcsname c@minted@lang\minted@lang\endcsname\else 1245 | \newcounter{minted@lang\minted@lang}% 1246 | \fi 1247 | \setcounter{minted@FancyVerbLineTemp}{\value{FancyVerbLine}}% 1248 | \setcounter{FancyVerbLine}{\value{minted@lang\minted@lang}}% 1249 | } 1250 | \newcommand{\minted@langlinenosoff}{% 1251 | \setcounter{minted@lang\minted@lang}{\value{FancyVerbLine}}% 1252 | \setcounter{FancyVerbLine}{\value{minted@FancyVerbLineTemp}}% 1253 | } 1254 | \ifthenelse{\boolean{minted@langlinenos}}{}{% 1255 | \let\minted@langlinenoson\relax 1256 | \let\minted@langlinenosoff\relax 1257 | } 1258 | \newcommand{\setminted}[2][]{% 1259 | \ifthenelse{\equal{#1}{}}% 1260 | {\setkeys{minted@opt@g}{#2}}% 1261 | {\minted@configlang{#1}% 1262 | \setkeys{minted@opt@lang}{#2}}} 1263 | \newcommand{\setmintedinline}[2][]{% 1264 | \ifthenelse{\equal{#1}{}}% 1265 | {\setkeys{minted@opt@g@i}{#2}}% 1266 | {\minted@configlang{#1}% 1267 | \setkeys{minted@opt@lang@i}{#2}}} 1268 | \setmintedinline[php]{startinline=true} 1269 | \newcommand{\usemintedstyle}[2][]{\setminted[#1]{style=#2}} 1270 | \begingroup 1271 | \catcode`\ =\active 1272 | \catcode`\^^I=\active 1273 | \gdef\minted@defwhitespace@retok{\def {\noexpand\FV@Space}\def^^I{\noexpand\FV@Tab}}% 1274 | \endgroup 1275 | \newcommand{\minted@writecmdcode}[1]{% 1276 | \immediate\openout\minted@code\minted@jobname.pyg\relax 1277 | \immediate\write\minted@code{\detokenize{#1}}% 1278 | \immediate\closeout\minted@code} 1279 | \newrobustcmd{\mintinline}[2][]{% 1280 | \begingroup 1281 | \setboolean{minted@isinline}{true}% 1282 | \minted@configlang{#2}% 1283 | \setkeys{minted@opt@cmd}{#1}% 1284 | \minted@fvset 1285 | \begingroup 1286 | \let\do\@makeother\dospecials 1287 | \catcode`\{=1 1288 | \catcode`\}=2 1289 | \catcode`\^^I=\active 1290 | \@ifnextchar\bgroup 1291 | {\minted@inline@iii}% 1292 | {\catcode`\{=12\catcode`\}=12 1293 | \minted@inline@i}} 1294 | \def\minted@inline@i#1{% 1295 | \endgroup 1296 | \def\minted@inline@ii##1#1{% 1297 | \minted@inline@iii{##1}}% 1298 | \begingroup 1299 | \let\do\@makeother\dospecials 1300 | \catcode`\^^I=\active 1301 | \minted@inline@ii} 1302 | \ifthenelse{\boolean{minted@draft}}% 1303 | {\newcommand{\minted@inline@iii}[1]{% 1304 | \endgroup 1305 | \begingroup 1306 | \minted@defwhitespace@retok 1307 | \everyeof{\noexpand}% 1308 | \endlinechar-1\relax 1309 | \let\do\@makeother\dospecials 1310 | \catcode`\ =\active 1311 | \catcode`\^^I=\active 1312 | \xdef\minted@tmp{\scantokens{#1}}% 1313 | \endgroup 1314 | \let\FV@Line\minted@tmp 1315 | \def\FV@SV@minted@tmp{% 1316 | \FV@Gobble 1317 | \expandafter\FV@ProcessLine\expandafter{\FV@Line}}% 1318 | \ifthenelse{\equal{\minted@get@opt{breaklines}{false}}{true}}% 1319 | {\let\FV@BeginVBox\relax 1320 | \let\FV@EndVBox\relax 1321 | \def\FV@BProcessLine##1{\FancyVerbFormatLine{##1}}% 1322 | \BUseVerbatim{minted@tmp}}% 1323 | {\BUseVerbatim{minted@tmp}}% 1324 | \endgroup}}% 1325 | {\newcommand{\minted@inline@iii}[1]{% 1326 | \endgroup 1327 | \minted@writecmdcode{#1}% 1328 | \RecustomVerbatimEnvironment{Verbatim}{BVerbatim}{}% 1329 | \setcounter{minted@FancyVerbLineTemp}{\value{FancyVerbLine}}% 1330 | \minted@pygmentize{\minted@lang}% 1331 | \setcounter{FancyVerbLine}{\value{minted@FancyVerbLineTemp}}% 1332 | \endgroup}} 1333 | \newrobustcmd{\mint}[2][]{% 1334 | \begingroup 1335 | \minted@configlang{#2}% 1336 | \setkeys{minted@opt@cmd}{#1}% 1337 | \minted@fvset 1338 | \begingroup 1339 | \let\do\@makeother\dospecials 1340 | \catcode`\{=1 1341 | \catcode`\}=2 1342 | \catcode`\^^I=\active 1343 | \@ifnextchar\bgroup 1344 | {\mint@iii}% 1345 | {\catcode`\{=12\catcode`\}=12 1346 | \mint@i}} 1347 | \def\mint@i#1{% 1348 | \endgroup 1349 | \def\mint@ii##1#1{% 1350 | \mint@iii{##1}}% 1351 | \begingroup 1352 | \let\do\@makeother\dospecials 1353 | \catcode`\^^I=\active 1354 | \mint@ii} 1355 | \ifthenelse{\boolean{minted@draft}}% 1356 | {\newcommand{\mint@iii}[1]{% 1357 | \endgroup 1358 | \begingroup 1359 | \minted@defwhitespace@retok 1360 | \everyeof{\noexpand}% 1361 | \endlinechar-1\relax 1362 | \let\do\@makeother\dospecials 1363 | \catcode`\ =\active 1364 | \catcode`\^^I=\active 1365 | \xdef\minted@tmp{\scantokens{#1}}% 1366 | \endgroup 1367 | \let\FV@Line\minted@tmp 1368 | \def\FV@SV@minted@tmp{% 1369 | \FV@CodeLineNo=1\FV@StepLineNo 1370 | \FV@Gobble 1371 | \expandafter\FV@ProcessLine\expandafter{\FV@Line}}% 1372 | \minted@langlinenoson 1373 | \UseVerbatim{minted@tmp}% 1374 | \minted@langlinenosoff 1375 | \endgroup}}% 1376 | {\newcommand{\mint@iii}[1]{% 1377 | \endgroup 1378 | \minted@writecmdcode{#1}% 1379 | \minted@langlinenoson 1380 | \minted@pygmentize{\minted@lang}% 1381 | \minted@langlinenosoff 1382 | \endgroup}} 1383 | \ifthenelse{\boolean{minted@draft}}% 1384 | {\newenvironment{minted}[2][] 1385 | {\VerbatimEnvironment 1386 | \minted@configlang{#2}% 1387 | \setkeys{minted@opt@cmd}{#1}% 1388 | \minted@fvset 1389 | \minted@langlinenoson 1390 | \begin{Verbatim}}% 1391 | {\end{Verbatim}% 1392 | \minted@langlinenosoff}}% 1393 | {\newenvironment{minted}[2][] 1394 | {\VerbatimEnvironment 1395 | \let\FVB@VerbatimOut\minted@FVB@VerbatimOut 1396 | \let\FVE@VerbatimOut\minted@FVE@VerbatimOut 1397 | \minted@configlang{#2}% 1398 | \setkeys{minted@opt@cmd}{#1}% 1399 | \minted@fvset 1400 | \begin{VerbatimOut}[codes={\catcode`\^^I=12}]{\minted@jobname.pyg}}% 1401 | {\end{VerbatimOut}% 1402 | \minted@langlinenoson 1403 | \minted@pygmentize{\minted@lang}% 1404 | \minted@langlinenosoff}} 1405 | \ifthenelse{\boolean{minted@draft}}% 1406 | {\newcommand{\inputminted}[3][]{% 1407 | \begingroup 1408 | \minted@configlang{#2}% 1409 | \setkeys{minted@opt@cmd}{#1}% 1410 | \minted@fvset 1411 | \VerbatimInput{#3}% 1412 | \endgroup}}% 1413 | {\newcommand{\inputminted}[3][]{% 1414 | \begingroup 1415 | \minted@configlang{#2}% 1416 | \setkeys{minted@opt@cmd}{#1}% 1417 | \minted@fvset 1418 | \minted@pygmentize[#3]{#2}% 1419 | \endgroup}} 1420 | \newcommand{\newminted}[3][]{ 1421 | \ifthenelse{\equal{#1}{}} 1422 | {\def\minted@envname{#2code}} 1423 | {\def\minted@envname{#1}} 1424 | \newenvironment{\minted@envname} 1425 | {\VerbatimEnvironment 1426 | \begin{minted}[#3]{#2}} 1427 | {\end{minted}} 1428 | \newenvironment{\minted@envname *}[1] 1429 | {\VerbatimEnvironment\begin{minted}[#3,##1]{#2}} 1430 | {\end{minted}}} 1431 | \newcommand{\newmint}[3][]{ 1432 | \ifthenelse{\equal{#1}{}} 1433 | {\def\minted@shortname{#2}} 1434 | {\def\minted@shortname{#1}} 1435 | \expandafter\newcommand\csname\minted@shortname\endcsname[2][]{ 1436 | \mint[#3,##1]{#2}##2}} 1437 | \newcommand{\newmintedfile}[3][]{ 1438 | \ifthenelse{\equal{#1}{}} 1439 | {\def\minted@shortname{#2file}} 1440 | {\def\minted@shortname{#1}} 1441 | \expandafter\newcommand\csname\minted@shortname\endcsname[2][]{ 1442 | \inputminted[#3,##1]{#2}{##2}}} 1443 | \newcommand{\newmintinline}[3][]{% 1444 | \ifthenelse{\equal{#1}{}}% 1445 | {\def\minted@shortname{#2inline}}% 1446 | {\def\minted@shortname{#1}}% 1447 | \expandafter\newrobustcmd\csname\minted@shortname\endcsname{% 1448 | \begingroup 1449 | \let\do\@makeother\dospecials 1450 | \catcode`\{=1 1451 | \catcode`\}=2 1452 | \@ifnextchar[{\endgroup\minted@inliner[#3][#2]}% 1453 | {\endgroup\minted@inliner[#3][#2][]}}% 1454 | \def\minted@inliner[##1][##2][##3]{\mintinline[##1,##3]{##2}}% 1455 | } 1456 | \ifthenelse{\boolean{minted@newfloat}}% 1457 | {\@ifundefined{minted@float@within}% 1458 | {\DeclareFloatingEnvironment[fileext=lol,placement=h]{listing}}% 1459 | {\def\minted@tmp#1{% 1460 | \DeclareFloatingEnvironment[fileext=lol,placement=h, within=#1]{listing}}% 1461 | \expandafter\minted@tmp\expandafter{\minted@float@within}}}% 1462 | {\@ifundefined{minted@float@within}% 1463 | {\newfloat{listing}{h}{lol}}% 1464 | {\newfloat{listing}{h}{lol}[\minted@float@within]}} 1465 | \ifminted@newfloat\else 1466 | \newcommand{\listingscaption}{Listing} 1467 | \floatname{listing}{\listingscaption} 1468 | \newcommand{\listoflistingscaption}{List of Listings} 1469 | \providecommand{\listoflistings}{\listof{listing}{\listoflistingscaption}} 1470 | \fi 1471 | \AtEndOfPackage{% 1472 | \ifthenelse{\boolean{minted@draft}}{}{% 1473 | \ifnum\pdf@shellescape=1\relax\else 1474 | \PackageError{minted}% 1475 | {You must invoke LaTeX with the 1476 | -shell-escape flag}% 1477 | {Pass the -shell-escape flag to LaTeX. Refer to the minted.sty 1478 | documentation for more information.}% 1479 | \fi 1480 | \setminted{style=default}% 1481 | }% 1482 | } 1483 | \AtEndPreamble{% 1484 | \ifthenelse{\boolean{minted@draft}}{}{% 1485 | \TestAppExists{pygmentize}% 1486 | \ifAppExists\else 1487 | \PackageError{minted}% 1488 | {You must have `pygmentize' installed 1489 | to use this package}% 1490 | {Refer to the installation instructions in the minted 1491 | documentation for more information.}% 1492 | \fi 1493 | }% 1494 | } 1495 | \AtEndDocument{ 1496 | \ifx\XeTeXinterchartoks\minted@undefined 1497 | \else 1498 | \DeleteFile[\minted@outputdir]{\minted@jobname.mintedcmd}% 1499 | \DeleteFile[\minted@outputdir]{\minted@jobname.mintedmd5}% 1500 | \fi 1501 | \DeleteFile[\minted@outputdir]{\minted@jobname.pyg}% 1502 | \DeleteFile[\minted@outputdir]{\minted@jobname.out.pyg}% 1503 | } 1504 | \endinput 1505 | %% 1506 | %% End of file `minted.sty'. 1507 | --------------------------------------------------------------------------------