196 lines
7.0 KiB
TeX
Executable File
196 lines
7.0 KiB
TeX
Executable File
%% Copyright (C) 2018 The University of Sheffield
|
|
%% 2018 The University of Paris-Saclay
|
|
%% 2019 The University of Exeter
|
|
%%
|
|
%% License:
|
|
%% This program can be redistributed and/or modified under the terms
|
|
%% of the LaTeX Project Public License Distributed from CTAN
|
|
%% archives in directory macros/latex/base/lppl.txt; either
|
|
%% version 1.3c of the License, or (at your option) any later version.
|
|
%% OR
|
|
%% The 2-clause BSD-style license.
|
|
%%
|
|
%% SPDX-License-Identifier: LPPL-1.3c+ OR BSD-2-Clause
|
|
\usepackage{listings}
|
|
\usepackage{listingsutf8}
|
|
\usepackage{tikz}
|
|
\usepackage[many]{tcolorbox}
|
|
\tcbuselibrary{listings}
|
|
\tcbuselibrary{skins}
|
|
\usepackage{xstring}
|
|
|
|
\definecolor{OliveGreen} {cmyk}{0.64,0,0.95,0.40}
|
|
\definecolor{BrickRed} {cmyk}{0,0.89,0.94,0.28}
|
|
\definecolor{Blue} {cmyk}{1,1,0,0}
|
|
\definecolor{CornflowerBlue}{cmyk}{0.65,0.13,0,0}
|
|
|
|
%%%\lst@BeginAspect[keywords]{isar}
|
|
\gdef\lst@tagtypes{s}
|
|
\gdef\lst@TagKey#1#2{%
|
|
\lst@Delim\lst@tagstyle #2\relax
|
|
{Tag}\lst@tagtypes #1%
|
|
{\lst@BeginTag\lst@EndTag}%
|
|
\@@end\@empty{}}
|
|
\lst@Key{tag}\relax{\lst@TagKey\@empty{#1}}
|
|
\lst@Key{tagstyle}{}{\def\lst@tagstyle{#1}}
|
|
\lst@AddToHook{EmptyStyle}{\let\lst@tagstyle\@empty}
|
|
\gdef\lst@BeginTag{%
|
|
\lst@DelimOpen
|
|
\lst@ifextags\else
|
|
{\let\lst@ifkeywords\iftrue
|
|
\lst@ifmarkfirstintag \lst@firstintagtrue \fi}}
|
|
\lst@AddToHookExe{ExcludeDelims}{\let\lst@ifextags\iffalse}
|
|
\gdef\lst@EndTag{\lst@DelimClose\lst@ifextags\else}
|
|
\lst@Key{usekeywordsintag}t[t]{\lstKV@SetIf{#1}\lst@ifusekeysintag}
|
|
\lst@Key{markfirstintag}f[t]{\lstKV@SetIf{#1}\lst@ifmarkfirstintag}
|
|
\gdef\lst@firstintagtrue{\global\let\lst@iffirstintag\iftrue}
|
|
\global\let\lst@iffirstintag\iffalse
|
|
\lst@AddToHook{PostOutput}{\lst@tagresetfirst}
|
|
\lst@AddToHook{Output}
|
|
{\gdef\lst@tagresetfirst{\global\let\lst@iffirstintag\iffalse}}
|
|
\lst@AddToHook{OutputOther}{\gdef\lst@tagresetfirst{}}
|
|
\lst@AddToHook{Output}
|
|
{\ifnum\lst@mode=\lst@tagmode
|
|
\lst@iffirstintag \let\lst@thestyle\lst@gkeywords@sty \fi
|
|
\lst@ifusekeysintag\else \let\lst@thestyle\lst@gkeywords@sty\fi
|
|
\fi}
|
|
\lst@NewMode\lst@tagmode
|
|
\gdef\lst@Tag@s#1#2\@empty#3#4#5{%
|
|
\lst@CArg #1\relax\lst@DefDelimB {}{}%
|
|
{\ifnum\lst@mode=\lst@tagmode \expandafter\@gobblethree \fi}%
|
|
#3\lst@tagmode{#5}%
|
|
\lst@CArg #2\relax\lst@DefDelimE {}{}{}#4\lst@tagmode}%
|
|
\gdef\lst@BeginCDATA#1\@empty{%
|
|
\lst@TrackNewLines \lst@PrintToken
|
|
\lst@EnterMode\lst@GPmode{}\let\lst@ifmode\iffalse
|
|
\lst@mode\lst@tagmode #1\lst@mode\lst@GPmode\relax\lst@modetrue}
|
|
%%\lst@EndAspect
|
|
|
|
|
|
|
|
% \gdef\lst@BeginTag{%
|
|
% \lst@DelimOpen
|
|
% \lst@ifextags\else
|
|
% {\let\lst@ifkeywords\iftrue
|
|
% \lst@ifmarkfirstintag\lst@firstintagtrue\fi\color{green}}}
|
|
% \gdef\lst@EndTag{\lst@DelimClose\lst@ifextags\else\color{green}}
|
|
|
|
\def\beginlstdelim#1#2#3%
|
|
{%
|
|
\def\endlstdelim{\texttt{\textbf{\color{black!60}#2}}\egroup}%
|
|
\ttfamily\textbf{\color{black!60}#1}\bgroup\rmfamily\color{#3}\aftergroup\endlstdelim%
|
|
}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%% <isar>
|
|
\providecolor{isar}{named}{gray}
|
|
%\renewcommand{\isacommand}[1]{\textcolor{OliveGreen!60}{\ttfamily\bfseries #1}}
|
|
\newcommand{\inlineisarbox}[1]{#1}
|
|
\NewTColorBox[]{isarbox}{}{
|
|
,boxrule=0pt
|
|
,boxsep=0pt
|
|
,colback=white!90!isar
|
|
,enhanced jigsaw
|
|
,borderline west={2pt}{0pt}{isar!60!black}
|
|
,sharp corners
|
|
,before skip balanced=0.5\baselineskip plus 2pt
|
|
% ,before skip=10pt
|
|
% ,after skip=10pt
|
|
,enlarge top by=0mm
|
|
,enhanced
|
|
,overlay={\node[draw,fill=isar!60!black,xshift=0pt,anchor=north
|
|
east,font=\bfseries\footnotesize\color{white}]
|
|
at (frame.north east) {Isabelle code};}
|
|
}
|
|
%% </isar>
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
\newcommand{\subscr}[1]{\ensuremath{_{\mbox{#1}}}}
|
|
\newcommand{\supscr}[1]{\ensuremath{^{\mbox{#1}}}}
|
|
\lstdefinestyle{ISAR}{%
|
|
language=%
|
|
,basicstyle=\ttfamily%
|
|
,showspaces=false%
|
|
,showlines=false%
|
|
,columns=flexible%
|
|
,morecomment=[s]{(*}{*)}%
|
|
% ,moredelim=*[s][\rmfamily]{\{*}{*\}}%
|
|
,moredelim = **[is][\beginlstdelim{\{*}{*\}}{black}]{\{*}{*\}}
|
|
,showstringspaces=false%
|
|
,moredelim=*[is][\supscr]{\\<^bsup>}{\\<^esup>}%
|
|
,literate={%
|
|
{...}{\,\ldots\,}3%
|
|
{\\<Open>}{\ensuremath{\isacartoucheopen}}1%
|
|
{\\at}{@}1%
|
|
{\\<Close>}{\ensuremath{\isacartoucheclose}}1%
|
|
{\\<Gamma>}{\ensuremath{\Gamma}}1%
|
|
{\\<times>}{\ensuremath{\times}}1%
|
|
{\\<rbrakk>}{\ensuremath{\mathclose{\rbrack\mkern-3mu\rbrack}}}1%
|
|
{\\<rbrace>}{\ensuremath{\mathclose{\mid\mkern-4.5mu\rbrace}}}1%
|
|
{\\<lbrakk>}{\ensuremath{\mathopen{\lbrack\mkern-3mu\lbrack}}}1%
|
|
{\\<lbrace>}{\ensuremath{\mathopen{\lbrace\mkern-4.5mu\mid}}}1%
|
|
{\\<Rightarrow>}{\ensuremath{\Rightarrow}}1%
|
|
{\{*}{\raise.3ex\hbox{$\scriptscriptstyle\langle$}}1%
|
|
{*\}}{\raise.3ex\hbox{$\scriptscriptstyle\rangle$}}1%
|
|
}%
|
|
% % Defining "tags" (text-antiquotations) based on 1-keywords
|
|
,tag=**[s]{@\{}{\}}%
|
|
,tagstyle=\color{CornflowerBlue}%
|
|
,markfirstintag=true%
|
|
,keywordstyle=\bfseries%
|
|
,keywords={}
|
|
% Defining 2-keywords
|
|
,keywordstyle=[2]{\color{Blue!60}\bfseries}%
|
|
,alsoletter={*,-}
|
|
,morekeywords=[2]{theory, begin, end, ML,section,subsection,paragraph,chapter,text}%
|
|
%,moredelim=[s][\textit]{<}{>}
|
|
% Defining 3-keywords
|
|
,keywordstyle=[3]{\color{OliveGreen!60}\bfseries}%
|
|
,morekeywords=[3]{doc_class,declare_reference,update_instance*,
|
|
open_monitor*, close_monitor*, figure*, title*, subtitle*,declare_reference*,section*,text*}%
|
|
% Defining 4-keywords
|
|
,keywordstyle=[4]{\color{black!60}\bfseries}%
|
|
,morekeywords=[4]{where, imports}%
|
|
% Defining 5-keywords
|
|
,keywordstyle=[5]{\color{BrickRed!70}\bfseries}%
|
|
,morekeywords=[5]{datatype, typedecl, consts, theorem}%
|
|
% Defining 6-keywords
|
|
,keywordstyle=[6]{\itshape}%
|
|
,morekeywords=[6]{meta-args, ref, expr, class_id}%
|
|
%
|
|
}%
|
|
%%
|
|
\lstnewenvironment{isar}[1][]{\lstset{style=ISAR,
|
|
backgroundcolor=\color{black!2},
|
|
frame=lines,
|
|
mathescape=true,
|
|
basicstyle=\footnotesize\ttfamily,#1}}{}
|
|
%%%
|
|
\def\inlineisar{\lstinline[style=ISAR,breaklines=true,mathescape,breakatwhitespace=true]}
|
|
|
|
\lstnewenvironment{out}[1][]{\lstset{
|
|
backgroundcolor=\color{green!2},
|
|
frame=lines,mathescape,breakatwhitespace=true
|
|
,columns=flexible%
|
|
,basicstyle=\footnotesize\rmfamily,#1}}{}
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%
|
|
%%%%%%%%%%%%%%%%%%
|
|
\lstloadlanguages{ML}
|
|
\lstdefinestyle{sml}{basicstyle=\ttfamily,%
|
|
commentstyle=\itshape,%
|
|
keywordstyle=\bfseries\color{CornflowerBlue},%
|
|
ndkeywordstyle=\color{red},%
|
|
language=ML,
|
|
,keywordstyle=[6]{\itshape}%
|
|
,morekeywords=[6]{args_type}%
|
|
}%
|
|
|
|
\lstnewenvironment{sml}[1][]{\lstset{style=sml,
|
|
backgroundcolor=\color{Blue!4},
|
|
frame=lines,
|
|
basicstyle=\footnotesize\ttfamily,#1}}{}
|
|
%%%
|
|
\def\inlinesml{\lstinline[style=sml,breaklines=true,mathescape,breakatwhitespace=true]}
|