diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /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.sty | 154 |
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 |