summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/verbments/verbments.sty
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/verbments/verbments.sty
Initial commit
Diffstat (limited to 'macros/latex/contrib/verbments/verbments.sty')
-rw-r--r--macros/latex/contrib/verbments/verbments.sty154
1 files changed, 154 insertions, 0 deletions
diff --git a/macros/latex/contrib/verbments/verbments.sty b/macros/latex/contrib/verbments/verbments.sty
new file mode 100644
index 0000000000..05c83f18c8
--- /dev/null
+++ b/macros/latex/contrib/verbments/verbments.sty
@@ -0,0 +1,154 @@
+% verbments.sty v1.2 2011/08/20
+%
+% Copyright (C) 2011 by Dejan Zivkovic
+% -----------------------------------
+%
+% This file may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.2
+% of this license or (at your option) any later version.
+% The latest version of this license is in:
+%
+% http://www.latex-project.org/lppl.txt
+%
+% and version 1.2 or later is part of all distributions of LaTeX
+% version 1999/12/01 or later.
+%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{verbments}[2011/08/20 v1.2 Pygments/fancyvrb source code highlighting for LaTeX]
+\RequirePackage{xkeyval,fancyvrb,framed,xcolor,calc}
+%
+\newcommand{\@listofpyglistingsname}{Listings}%
+\newcommand{\listofpyglistingsname}[1]{%
+ \renewcommand\@listofpyglistingsname{#1}
+}
+\newcommand{\listofpyglistings}{%
+ \begingroup
+ \let\contentsname\@listofpyglistingsname
+ \let\@pygtoc\@starttoc \def\@starttoc##1{\@pygtoc{pyg.lol}}%
+ \tableofcontents%
+ \endgroup
+}
+\newcommand{\lol@caption}[1]{%
+ \addcontentsline{pyg.lol}{pyglist}{#1}
+}
+\newcommand{\l@pyglist}[2]{%
+ \@dottedtocline{1}{1.5em}{2.3em}{#1}{#2}
+}
+%
+\newlength{\@tmpwidth}
+%
+\newskip\@tmpvskip
+\def\max@vskip #1{%
+ \@tmpvskip = #1\relax
+ \ifdim\lastskip < \@tmpvskip
+ \ifdim\lastskip = 0pt
+ \else \vskip -\lastskip
+ \fi
+ \vskip \@tmpvskip
+ \fi%
+}
+
+\setlength{\FrameSep}{0pt}
+\setlength{\FrameRule}{0pt}
+%
+\define@cmdkey{pyglist}[pl@]{caption}{}
+\define@cmdkey{pyglist}[pl@]{captionfont}[{}]{}
+\define@cmdkey{pyglist}[pl@]{abovecaptionskip}[\bigskipamount]{}
+\define@cmdkey{pyglist}[pl@]{belowcaptionskip}[0pt]{}
+\define@cmdkey{pyglist}[pl@]{listingname}[Listing]{}
+\define@cmdkey{pyglist}[pl@]{listingnamefont}[{}]{}
+\define@cmdkey{pyglist}[pl@]{captionbgcolor}{}
+\define@cmdkey{pyglist}[pl@]{label}{}
+%
+\define@cmdkey{pyglist}[pl@]{bgcolor}[white]{}
+\define@cmdkey{pyglist}[pl@]{language}[text]{}
+\define@cmdkey{pyglist}[pl@]{encoding}[latin1]{}
+\define@boolkey{pyglist}[pl@]{mathescape}[false]{}
+\define@boolkey{pyglist}[pl@]{texcl}[false]{}
+\define@cmdkey{pyglist}[pl@]{style}[default]{}
+\define@cmdkey{pyglist}[pl@]{gobble}[0]{}
+%
+\define@cmdkey{pyglist}[pl@]{fvset}{\fvset{#1}}
+\define@cmdkey{pyglist}[pl@]{fontsize}{\fvset{fontsize=#1}}
+\define@cmdkey{pyglist}[pl@]{numbers}{\fvset{numbers=#1}}
+\define@cmdkey{pyglist}[pl@]{numbersep}{\fvset{numbersep=#1}}
+\define@boolkey{pyglist}[pl@]{showspaces}{\fvset{showspaces=#1}}
+
+\newcommand\plset[1]{%
+ \setkeys{pyglist}{#1}%
+}
+
+\newenvironment{pyglist}{%
+ \catcode`\^^M=\active
+ \@ifnextchar[%
+ {\catcode`\^^M=5 \pyglist@}
+ {\catcode`\^^M=5 \pyglist@[]}
+}{%
+ \end{VerbatimOut}%
+ \immediate\write18{\pyg@cmd}
+ \immediate\write18{\pyg@style}
+ \input{\jobname.pyg.sty}%
+%
+ \partopsep = 0pt\parskip = 0pt\parindent = 0pt%
+ \@ifundefined{pl@caption}%
+ {\setlength{\topsep}{0pt}}%
+ {\par%
+ \max@vskip{\pl@abovecaptionskip}%
+ \penalty -100% encourage page break
+ \refstepcounter{pllisting}%
+ \@ifundefined{pl@label}{}{\label{\pl@label}}%
+ \@tmpvskip=3\baselineskip%
+ \vskip \@tmpvskip\penalty 1000\vskip -\@tmpvskip\vskip \z@skip% prevent page break
+ \settowidth{\@tmpwidth}{\pl@listingnamefont\pl@listingname~\thepllisting:\space}%
+ \@ifundefined{pl@captionbgcolor}%
+ {\mbox{\pl@listingnamefont\pl@listingname~\thepllisting:\space}%
+ \parbox[t]{\linewidth-\@tmpwidth}%
+ {\leavevmode\pl@captionfont\pl@caption}%
+ }
+ {\setlength{\fboxrule}{0pt}\setlength{\fboxsep}{4pt}%
+ \colorbox{\pl@captionbgcolor}{%
+ \mbox{\pl@listingnamefont\pl@listingname~\thepllisting:\space}%
+ \parbox[t]{\linewidth-\@tmpwidth-2\fboxsep}%
+ {\leavevmode\pl@captionfont\pl@caption}%
+ }%
+ }%
+ \par\nobreak\vskip\pl@belowcaptionskip%
+ \setlength{\topsep}{\smallskipamount}%
+ \lol@caption{\rlap{\thepllisting}\hskip5ex \pl@caption}
+ }%
+%
+ \definecolor{shadecolor}{named}{\pl@bgcolor}%
+ \begin{snugshade}
+ \input{\jobname.pyg.vrb}
+ \end{snugshade}
+}
+
+\def\pyglist@[#1]{%
+ \setkeys{pyglist}{#1}
+ \edef\pyg@cmd{pygmentize -P encoding=\pl@encoding\space -l \pl@language\space
+ -F tokenmerge \ifnum\pl@gobble=0\space \else -F gobble:n=\pl@gobble\space\fi
+ -f latex
+ \ifpl@texcl -P texcomments\space\fi
+ \ifpl@mathescape -P mathescape\space\fi
+ -o \jobname.pyg.vrb \jobname.pyg.lst}
+ \edef\pyg@style{pygmentize -S \pl@style\space -f latex > \jobname.pyg.sty}
+ \VerbatimEnvironment
+ \begin{VerbatimOut}{\jobname.pyg.lst}% NO char whatsoever to the next brace
+}
+
+\AtBeginDocument{
+ \@ifundefined{thechapter}{
+ \newcounter{pllisting}
+ \gdef\thepllisting{\@arabic\c@pllisting}
+ }{
+ \newcounter{pllisting}[chapter]
+ \gdef\thepllisting%
+ {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@pllisting}
+ }
+}
+
+% Set default key values
+\plset{captionfont,abovecaptionskip,belowcaptionskip,listingname,listingnamefont,%
+ bgcolor,language,encoding,mathescape,texcl,style,gobble%
+}
+\endinput