%% %% This is file `checklistings.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% checklistings.dtx (with options: `package') %% %% This is a generated file. %% %% Copyright (C) 2015 by Timothy Bourke %% and Marc Pouzet %% %% 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{checklistings} [2015/09/01 v1.0 compile code samples and insert the results] \RequirePackage{keyval} \RequirePackage{kvoptions} \RequirePackage{fancyvrb} \RequirePackage{color} \RequirePackage{listings} \makeatletter \lst@RequireAspects{writefile} \SetupKeyvalOptions{family=CHKL,prefix=CHKL@} \makeatother \makeatletter \newcounter{chklisting} \ifdefined\resetcounteronoverlays \resetcounteronoverlays{chklisting} \fi \newif\ifCHKL@fileexists \def\CHKL@pkg@verbopts{} \def\CHKL@pkg@globalskip{0} \DeclareBoolOption{withresult} \DeclareComplementaryOption{withoutresult}{withresult} \DeclareBoolOption[true]{showproblems} \DeclareComplementaryOption{hideproblems}{showproblems} \DeclareVoidOption{skipone} {\edef\CHKL@pkg@globalskip{1}% \edef\CHKL@pkg@verbopts{\CHKL@pkg@verbopts,firstline=2}} \DeclareVoidOption{skiptwo} {\edef\CHKL@pkg@globalskip{2}% \edef\CHKL@pkg@verbopts{\CHKL@pkg@verbopts,firstline=3}} \DeclareDefaultOption {\edef\CHKL@pkg@verbopts{\CHKL@pkg@verbopts,\CurrentOption}} \DeclareStringOption[]{codestyle} \DeclareStringOption[formatcom=\em]{msgstyle} \DeclareStringOption[formatcom=\em]{errstyle} \DeclareStringOption{codelst} \DeclareStringOption{msglst} \DeclareStringOption{errlst} \DeclareStringOption{emptyoption} \DeclareStringOption[.]{subdir} \DeclareStringOption[chklisting]{prefix} \DeclareStringOption[.ml]{ext} \DeclareStringOption[\#]{prompt} \DeclareStringOption[ocamlc]{compiler} \DeclareStringOption{compilerflags} \DeclareStringOption[-i]{lastflags} \DeclareStringOption[open]{includecmd} \DeclareStringOption[]{html} \ProcessKeyvalOptions* \def\checklistings{\kvsetkeys{CHKL}} \newwrite\CHKL@samplefile \openout\CHKL@samplefile=\jobname.chkl \AtEndDocument{\closeout\CHKL@samplefile} \write\CHKL@samplefile{subdir=\CHKL@subdir/} \write\CHKL@samplefile{prefix=\CHKL@prefix} \write\CHKL@samplefile{ext=\CHKL@ext} \write\CHKL@samplefile{compiler=\CHKL@compiler} \write\CHKL@samplefile{compilerflags=\CHKL@compilerflags} \write\CHKL@samplefile{lastflags=\CHKL@lastflags} \write\CHKL@samplefile{includecmd=\CHKL@includecmd} \write\CHKL@samplefile{htmlfilter=\CHKL@html} \DeclareRobustCommand{\CHKL@logsample}[2]{% \edef\CHKL@tolog{#1:#2 [page=\noexpand\thepage] [line=\the\inputlineno]}% \expandafter\write\expandafter\CHKL@samplefile\expandafter{\CHKL@tolog}% } \newif\ifchklisting \DeclareRobustCommand{\setchklistingcmd}[1]{% \global\def\chklistingcmd{\emph{\CHKL@prompt{#1}}}} \def\ChkListingMsg{\FV@Environment{}{ChkListingMsg}} \def\FVB@ChkListingMsg{\FVB@SaveVerbatim{ChkListingMsg}} \let\FVE@ChkListingMsg\FVE@SaveVerbatim \DefineVerbatimEnvironment{ChkListingMsg}{ChkListingMsg}{} \def\ChkListingErr{\FV@Environment{}{ChkListingErr}} \def\FVB@ChkListingErr{\FVB@SaveVerbatim{ChkListingErr}} \let\FVE@ChkListingErr\FVE@SaveVerbatim \DefineVerbatimEnvironment{ChkListingErr}{ChkListingErr}{} \DeclareRobustCommand{\chklistingfile}{\CHKL@prefix\CHKL@ext} \newif\ifCHKL@shouldfail \newif\ifCHKL@showcode \def\CHKL@skip{0} \edef\CHKL@precontinue{} \define@key{CHKL@envkeys}{continue}[]{\edef\CHKL@continue{\CHKL@precontinue}} \define@key{CHKL@envkeys}{include}{% \edef\CHKL@continue{\CHKL@continue\space\@ifundefined{CHKL@deps@#1}% {#1}{\csname CHKL@deps@#1\endcsname}}} \define@key{CHKL@envkeys}{fail}[]{\CHKL@shouldfailtrue} \define@key{CHKL@envkeys}{label}{\edef\CHKL@label{#1}} \define@key{CHKL@envkeys}{skipnone}[]{% \edef\CHKL@skip{0}\edef\CHKL@verbopts{\CHKL@verbopts,firstline=1}} \define@key{CHKL@envkeys}{skipone}[]{% \edef\CHKL@skip{1}\edef\CHKL@verbopts{\CHKL@verbopts,firstline=2}} \define@key{CHKL@envkeys}{skiptwo}[]{% \edef\CHKL@skip{2}\edef\CHKL@verbopts{\CHKL@verbopts,firstline=3}} \define@key{CHKL@envkeys}{hide}[]{\CHKL@showcodefalse} \define@key{CHKL@envkeys}{withresult}[]{\CHKL@withresulttrue} \define@key{CHKL@envkeys}{withoutresult}[]{\CHKL@withresultfalse} \define@key{CHKL@envkeys}{showproblems}[]{\CHKL@showproblemstrue} \define@key{CHKL@envkeys}{hideproblems}[]{\CHKL@showproblemsfalse} \DeclareRobustCommand{\chklistingmsg}[1]{ \bgroup% \ifx\CHKL@msglst\CHKL@emptyoption\else \expandafter\lstset\expandafter{\CHKL@msglst,fancyvrb=true}\fi% \@ifundefined{FV@SV@CHKL@MSG@#1} {\def\@tempa{#1} \ifx\@tempa\empty \CHKL@none \else $\langle$No message found for the label `#1'!$\rangle$ \fi} {\expandafter\UseVerbatim\expandafter[\CHKL@msgstyle]{CHKL@MSG@#1}}% \egroup} \DeclareRobustCommand{\chklistingerr}[1]{ \bgroup% \ifx\CHKL@errlst\CHKL@emptyoption\else \expandafter\lstset\expandafter{\CHKL@errlst,fancyvrb=true}\fi% \@ifundefined{FV@SV@CHKL@ERR@#1} {\def\@tempa{#1} \ifx\@tempa\empty \CHKL@none \else $\langle$No message found for the label `#1'!$\rangle$ \fi} {\expandafter\UseVerbatim\expandafter[\CHKL@errstyle]{CHKL@ERR@#1}}% \egroup} \lstnewenvironment{chklisting}[1][] {% \CHKL@shouldfailfalse% \CHKL@showcodetrue% \let\CHKL@label\@undefined% \edef\CHKL@continue{}% \def\CHKL@skip{\CHKL@pkg@globalskip}% \let\CHKL@verbopts\CHKL@pkg@verbopts% \def\@currentlabel{\thechklisting}% \setkeys{CHKL@envkeys}{#1}% \CHKL@logsample{\arabic{chklisting}}{\CHKL@continue% \space\ifnum\CHKL@skip>0[skip=\CHKL@skip]\fi% \ifCHKL@shouldfail\space[fail]\fi}% \global\edef\CHKL@precontinue{\CHKL@continue\space\arabic{chklisting}}% \@ifundefined{CHKL@label}{}{% \global\expandafter\edef\csname CHKL@deps@\CHKL@label\endcsname{\CHKL@precontinue}}% \edef\CHKL@num{% \ifnum\value{chklisting}<1000 0\fi \ifnum\value{chklisting}<100 0\fi \ifnum\value{chklisting}<10 0\fi \arabic{chklisting}}% \stepcounter{chklisting}% \def\CHKL@file{\CHKL@subdir/\CHKL@prefix\CHKL@num}% \global\let\chklistingcmd\@undefined% \global\let\FV@SV@ChkListingMsg\@undefined% \global\let\FV@SV@ChkListingErr\@undefined% \chklistingtrue% \setbox\@tempboxa\hbox\bgroup% \lst@BeginWriteFile{\CHKL@file\CHKL@ext}% } {% \lst@EndWriteFile% \egroup% \ifCHKL@showcode% \bgroup% \ifx\CHKL@codelst\CHKL@emptyoption\else% \expandafter\lstset\expandafter{\CHKL@codelst,fancyvrb=true}% \fi% \expandafter\fvset\expandafter{\CHKL@verbopts}% \expandafter\VerbatimInput\expandafter[\CHKL@codestyle]{\CHKL@file\CHKL@ext}% \egroup% \fi% \global\edef\CHKL@none{$\langle$Cannot load \CHKL@file.tex!$\rangle$}% \InputIfFileExists{\CHKL@file.tex}{\CHKL@fileexiststrue}{\CHKL@fileexistsfalse}% \ifCHKL@fileexists% \@ifundefined{FV@SV@ChkListingMsg}% {}{\global\let\FV@SV@CHKL@MSG@=\FV@SV@ChkListingMsg}% \@ifundefined{FV@SV@ChkListingErr}% {}{\global\let\FV@SV@CHKL@ERR@=\FV@SV@ChkListingErr}% \ifCHKL@shouldfail% \ifchklisting% \PackageWarning{checklistings}% {Compilation of \CHKL@file\CHKL@ext\space should have failed}% \ifCHKL@showproblems% \UseVerbatim[frame=single, label=Unexpected success, rulecolor=\color{red}]{ChkListingMsg}% \fi% \else% \ifCHKL@withresult% {\setlength{\partopsep}{0em}\chklistingerr{}}% \fi% \fi% \else% \ifchklisting% \ifCHKL@withresult% {%\vspace{\dimexpr-2\topsep-2\partopsep+.5em\relax}% \setlength{\partopsep}{0em}\chklistingmsg{}}% \fi% \else% \PackageWarning{checklistings}% {Compilation of \CHKL@file\CHKL@ext\space should not have failed}% \ifCHKL@showproblems% \UseVerbatim[frame=single, label=Unexpected failure, rulecolor=\color{red}]{ChkListingErr}% \fi% \fi% \fi% \else% \PackageWarning{checklistings}{Cannot load \CHKL@file.tex}% \global\let\chklistingcmd\CHKL@none% \global\let\FV@SV@CHKL@MSG@\@undefined% \global\let\FV@SV@CHKL@ERR@\@undefined% \fi% \@ifundefined{CHKL@label}{}{% \global\expandafter\let% \csname FV@SV@CHKL@MSG@\CHKL@label\endcsname=\FV@SV@CHKL@MSG@% \global\expandafter\let% \csname FV@SV@CHKL@ERR@\CHKL@label\endcsname=\FV@SV@CHKL@ERR@% }% }% \makeatother \clearpage \endinput %% %% End of file `checklistings.sty'.