%% 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 \NeedsTeXFormat{LaTeX2e}\relax \ProvidesPackage{DOF-core} [% Document-Type Support Framework for Isabelle.] \RequirePackage{keycommand} \RequirePackage{environ} \RequirePackage{graphicx} \RequirePackage{xspace} \RequirePackage{etoolbox} \RequirePackage{fp} \newcommand{\isabelleurl}{UNDEFINED} \newcommand{\dofurl}{UNDEFINED} \newcommand{\dof@isabelleversion}{UNDEFINED} \newcommand{\isabellefullversion}{UNDEFINED\xspace} \newcommand{\dof@version}{UNDEFINED} \newcommand{\dof@artifacturl}{UNDEFINED} \newcommand{\doflatestversion}{UNDEFINED} \newcommand{\isadoflatestdoi}{UNDEFINED} \newcommand{\isadofgenericdoi}{UNDEFINED} \newcommand{\isabellelatestversion}{Isabelle2019} %%% CONFIG %%% \newcommand{\isabelleversion}{\dof@isabelleversion\xspace} \newcommand{\dofversion}{\dof@version\xspace} \newcommand{\isadofversion}{\dofversion/\isabelleversion} \newcommand{\isadoflatestversion}{\doflatestversion/\isabellelatestversion} \newcommand{\isadofdir}{Isabelle_DOF-\dof@version_\dof@isabelleversion} \newcommand{\isadofdirn}{Isabelle\_DOF-\dof@version\_\dof@isabelleversion} \newcommand{\isadofarchive}{\isadofdir.tar.xz} \newcommand{\isadofarchiven}{\isadofdirn.tar.xz} \newcommand{\isadofarchiveurl}{\dof@artifacturl/\isadofarchive} \newcommand{\isadof}{Isabelle/DOF\xspace} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % begin: newcommand wrapper \newcommand\newisadof[1]{\expandafter\newkeycommand\csname isaDof.#1\endcsname}% \newcommand\renewisadof[1]{\expandafter\renewkeycommand\csname isaDof.#1\endcsname}% \newcommand\provideisadof[1]{\expandafter\providekeycommand\csname isaDof.#1\endcsname}% % end: newcommand wrapper %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % begin: generic dispatcher \newkeycommand+[\|]\isaDof[env={UNKNOWN},label=,type={dummyT},args={}][1]{% \ifcsname isaDof.\commandkey{type}\endcsname% \csname isaDof.\commandkey{type}\endcsname% [label=\commandkey{label},\commandkey{args}]{#1}% \else\relax\fi% \ifcsname isaDof.\commandkey{env}.\commandkey{type}\endcsname% \csname isaDof.\commandkey{env}.\commandkey{type}\endcsname% [label=\commandkey{label},\commandkey{args}]{#1}% \else% \message{Isabelle/DOF: Using default LaTeX representation for concept % "\commandkey{env}.\commandkey{type}".}% \ifcsname isaDof.\commandkey{env}\endcsname% \csname isaDof.\commandkey{env}\endcsname% [label=\commandkey{label}]{#1}% \else% \errmessage{Isabelle/DOF: No LaTeX representation for concept % "\commandkey{env}.\commandkey{type}" defined and no default % definition for "\commandkey{env}" available either.}% \fi% \fi% } % end: generic dispatcher %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % begin: text*-dispatcher \NewEnviron{isamarkuptext*}[1][]{\isaDof[env={text},#1]{\BODY}} % end: text*-dispatcher %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % begin: chapter*-dispatcher \NewEnviron{isamarkupchapter*}[1][]{\isaDof[env={chapter},#1]{\BODY}} % end: chapter*-dispatcher %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % begin: section*-dispatcher \NewEnviron{isamarkupsection*}[1][]{\isaDof[env={section},#1]{\BODY}} % end: section*-dispatcher %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % begin: subsection*-dispatcher \NewEnviron{isamarkupsubsection*}[1][]{\isaDof[env={subsection},#1]{\BODY}} % end: subsection*-dispatcher %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % begin: subsubsection*-dispatcher \NewEnviron{isamarkupsubsubsection*}[1][]{\isaDof[env={subsubsection},#1]{\BODY}} % end: subsubsection*-dispatcher %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % begin: paragraph*-dispatcher \NewEnviron{isamarkupparagraph*}[1][]{\isaDof[env={paragraph},#1]{\BODY}} % end: paragraph*-dispatcher %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % begin: text default implementation \newisadof{text}[label=,type=][1]{% \begin{isamarkuptext}\label{\commandkey{label}}% #1 \end{isamarkuptext}% } % end: text default implementation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % begin: chapter/section default implementations \newisadof{chapter}[label=,type=][1]{% \isamarkupfalse\isamarkupchapter{#1}\label{\commandkey{label}}\isamarkuptrue% } \newisadof{section}[label=,type=][1]{% \isamarkupfalse\isamarkupsection{#1}\label{\commandkey{label}}\isamarkuptrue% } \newisadof{subsection}[label=,type=][1]{% \isamarkupfalse\isamarkupsubsection{#1}\label{\commandkey{label}}\isamarkuptrue% } \newisadof{subsubsection}[label=,type=][1]{% \isamarkupfalse\isamarkupsubsubsection{#1}\label{\commandkey{label}}\isamarkuptrue% } \newisadof{paragraph}[label=,type=][1]{% \isamarkupfalse\isamarkupparagraph{#1}\label{\commandkey{label}}\isamarkuptrue% } % end: chapter/section default implementations %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % begin: label and ref \newisadof{label}[label=,type=][1]{\label{#1}} \newisadof{ref}[label=,type=][1]{\autoref{#1}} \newisadof{macroDef}[label=,type=][1]{MMM \label{#1}} %% place_holder \newisadof{macroExp}[label=,type=][1]{MMM \autoref{#1}} %% place_holder % end: label and ref %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%