default for \<euro> is now based on eurosym package, instead of slightly exotic babel/greek (which causes problems with the Gentoo installation on lxbroy2);
#!/usr/bin/env bash## Author: Markus Wenzel, TU Muenchen## DESCRIPTION: prepare logic session directory## diagnosticsPRG="$(basename "$0")"function usage(){ echo echo "Usage: isabelle $PRG [OPTIONS] [LOGIC] NAME" echo echo " Options are:" echo " -I FILE alternative IsaMakefile output" echo " -P include parent logic target" echo " -b setup build mode (session outputs heap image)" echo " -q quiet mode" echo echo " Prepare session directory, including IsaMakefile and document source" echo " with parent LOGIC (default ISABELLE_LOGIC=$ISABELLE_LOGIC)" echo exit 1}function fail(){ echo "$1" >&2 exit 2}## process command line# optionsISAMAKEFILE="IsaMakefile"PARENT=""BUILD=""QUIET=""while getopts "I:Pbq" OPTdo case "$OPT" in I) ISAMAKEFILE="$OPTARG" ;; P) PARENT=true ;; b) BUILD=true ;; q) QUIET=true ;; \?) usage ;; esacdoneshift $(($OPTIND - 1))# argsif [ "$#" -eq 1 ]; then LOGIC="$ISABELLE_LOGIC" DIR_NAME="$1"; shiftelif [ "$#" -eq 2 ]; then LOGIC="$1"; shift DIR_NAME="$1"; shiftelse usagefiDIR=$(dirname "$DIR_NAME")NAME=$(basename "$DIR_NAME")## main[ -z "$QUIET" ] && echo "Preparing session \"$NAME\" ..."# IsaMakefilemkdir -p "$DIR" || fail "Bad directory: $DIR"cd "$DIR"DOCUMENT_ROOT=""VERBOSE=""[ -z "$QUIET" ] && VERBOSE="-v true "if [ -n "$BUILD" ]; then IMAGES="$NAME" TEST="" TARGET="\$(OUT)/$NAME" ROOT_ML="ROOT.ML" SOURCES="*.thy" DOCUMENT_ROOT="document/root.tex" USEDIR="\$(USEDIR) -b -P http://isabelle.in.tum.de/library"else IMAGES="" TEST="$NAME" TARGET="\$(LOG)/$LOGIC-$NAME.gz" ROOT_ML="$NAME/ROOT.ML" SOURCES="$NAME/*.thy" DOCUMENT_ROOT="$NAME/document/root.tex" USEDIR="\$(USEDIR)"fiif [ "$ISAMAKEFILE" != - -a -f "$ISAMAKEFILE" ]; then echo "keeping $DIR/$ISAMAKEFILE" >&2else [ -z "$QUIET" -a -n "$ISAMAKEFILE" -a "$ISAMAKEFILE" != - ] && \ echo "creating $DIR/$ISAMAKEFILE" >&2 { echo echo "## targets" echo echo "default: $NAME" echo "images: $IMAGES" echo "test: $TEST" echo echo "all: images test" echo echo echo "## global settings" echo echo "SRC = \$(ISABELLE_HOME)/src" echo "OUT = \$(ISABELLE_OUTPUT)" echo "LOG = \$(OUT)/log" echo echo "USEDIR = \$(ISABELLE_TOOL) usedir ${VERBOSE}-i true -d $ISABELLE_DOC_FORMAT ## -D generated" echo echo echo "## $NAME" echo "" if [ -n "$PARENT" ]; then echo "$NAME: $LOGIC $TARGET" echo echo "$LOGIC:" echo -e "\t@cd \$(SRC)/$LOGIC; \$(ISABELLE_TOOL) make $LOGIC" echo echo "$TARGET: \$(OUT)/$LOGIC $ROOT_ML $DOCUMENT_ROOT ## $SOURCES" echo -e "\t@$USEDIR \$(OUT)/$LOGIC $NAME" else echo "$NAME: $TARGET" echo echo "$TARGET: ## $ROOT_ML $DOCUMENT_ROOT $SOURCES" echo -e "\t@$USEDIR $LOGIC $NAME" fi echo echo echo "## clean" echo echo "clean:" echo -e "\t@rm -f $TARGET" } | { if [ -z "$ISAMAKEFILE" -o "$ISAMAKEFILE" = - ]; then cat else cat > "$ISAMAKEFILE" fi }fi# base directoryif [ -z "$BUILD" ]; then mkdir -p "$NAME" || fail "Bad directory: $DIR/$NAME" cd "$NAME" PREFIX="$DIR/$NAME"else PREFIX="$DIR"fiif [ -f ROOT.ML ]; then echo "keeping $PREFIX/ROOT.ML" >&2else [ -z "$QUIET" ] && echo "creating $PREFIX/ROOT.ML" >&2 cat >ROOT.ML <<EOF(* no_document use_thys ["This_Theory1", "This_Theory2"]; use_thys ["That_Theory1", "That_Theory2", "That_Theory3"];*)EOFfi# document directoryif [ -e document ]; then echo "keeping $PREFIX/document" >&2else [ -z "$QUIET" ] && echo "creating $PREFIX/document" >&2 mkdir document || fail "Bad directory: $PREFIX/document" [ -z "$QUIET" ] && echo "creating $PREFIX/document/root.tex" >&2 TITLE=$(echo "$NAME" | tr _ - | tr -d '\\') AUTHOR=$(echo "By $USER" | tr _ - | tr -d '\\') cat >document/root.tex <<EOF\documentclass[11pt,a4paper]{article}\usepackage{isabelle,isabellesym}% further packages required for unusual symbols (see also% isabellesym.sty), use only when needed%\usepackage{amssymb} %for \<leadsto>, \<box>, \<diamond>, \<sqsupset>, \<mho>, \<Join>, %\<lhd>, \<lesssim>, \<greatersim>, \<lessapprox>, \<greaterapprox>, %\<triangleq>, \<yen>, \<lozenge>%\usepackage{eurosym} %for \<euro>%\usepackage[only,bigsqcap]{stmaryrd} %for \<Sqinter>%\usepackage{eufrak} %for \<AA> ... \<ZZ>, \<aa> ... \<zz> (also included in amssymb)%\usepackage{textcomp} %for \<onequarter>, \<onehalf>, \<threequarters>, \<degree>, \<cent>, %\<currency>% this should be the last package used\usepackage{pdfsetup}% urls in roman style, theory text in math-similar italics\urlstyle{rm}\isabellestyle{it}% for uniform font size%\renewcommand{\isastyle}{\isastyleminor}\begin{document}\title{$TITLE}\author{$AUTHOR}\maketitle\tableofcontents% sane default for proof documents\parindent 0pt\parskip 0.5ex% generated text of all theories\input{session}% optional bibliography%\bibliographystyle{abbrv}%\bibliography{root}\end{document}%%% Local Variables:%%% mode: latex%%% TeX-master: t%%% End:EOFfi# notesif [ -z "$QUIET" ]; then cat >&2 <<EOFNotes: * 'isabelle make' processes the session (including document preparation) * $DIR/IsaMakefile contains compilation options and file dependencies * $PREFIX/document/root.tex contains the LaTeX master document setup * $PREFIX/ROOT.ML needs to contain ML code to load all theoriesEOFfi