summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregor Kleen <gkleen@yggdrasil.li>2017-06-07 02:14:31 +0200
committerGregor Kleen <gkleen@yggdrasil.li>2017-06-07 02:14:31 +0200
commite7b84f8b87da8ea1add3cda9ba3a07cf1f86e7b6 (patch)
treef0d2de6986e4fa66ebe90f30a81fcf943c9c7a45
parentff8deaa9ed63e6bd067c45c75966a24f7bfcaab3 (diff)
downloaduni-e7b84f8b87da8ea1add3cda9ba3a07cf1f86e7b6.tar
uni-e7b84f8b87da8ea1add3cda9ba3a07cf1f86e7b6.tar.gz
uni-e7b84f8b87da8ea1add3cda9ba3a07cf1f86e7b6.tar.bz2
uni-e7b84f8b87da8ea1add3cda9ba3a07cf1f86e7b6.tar.xz
uni-e7b84f8b87da8ea1add3cda9ba3a07cf1f86e7b6.zip
Much more extensive pdf compiling
-rw-r--r--gup/Gupfile2
-rwxr-xr-xgup/pdf.gup76
-rw-r--r--gup/ps.gup7
-rw-r--r--preamble.tex97
-rw-r--r--shell.nix3
5 files changed, 176 insertions, 9 deletions
diff --git a/gup/Gupfile b/gup/Gupfile
index 0478f35..8912143 100644
--- a/gup/Gupfile
+++ b/gup/Gupfile
@@ -1,5 +1,7 @@
1pdf.gup: 1pdf.gup:
2 **/*.pdf 2 **/*.pdf
3ps.gup:
4 **/*.ps
3abgabe.gup: 5abgabe.gup:
4 **/abgabe.zip 6 **/abgabe.zip
5manifest.gup: 7manifest.gup:
diff --git a/gup/pdf.gup b/gup/pdf.gup
index 3b3aa3a..96f46ca 100755
--- a/gup/pdf.gup
+++ b/gup/pdf.gup
@@ -1,9 +1,77 @@
1#!/usr/bin/env zsh 1#!/usr/bin/env zsh
2 2
3base=(${2%.pdf}.(md|lhs)([1])) 3ret=0
4 4
5gup -u ${base} preamble.tex 5logged() {
6 printf ">>> ā€˜%sā€™ in %s\n" "$*" $(pwd) >&2
7 ${@}
8 ret=$?
9 printf ">>> %d\n" $ret >&2
10}
6 11
7for i ({0..1}); do 12typeset -a cleanupList
8 pandoc -t latex -o $1 -V "geometry=margin=2cm" -V "fontfamily=libertine" -H preamble.tex --listings --latex-engine=lualatex ${base} >&2 13cleanupList=()
14cleanup() {
15 for cmd in ${cleanupList}; do
16 eval $cmd
17 done
18}
19trap cleanup EXIT
20
21base=(${2%.pdf}.(md|lhs|tex)([1]))
22metadata=(${2%.pdf}.meta.yml([1]N))
23
24gup -u ${base} ${metadata} preamble.tex
25
26buildDir=$(pwd)
27
28base=${base:A}
29metadata=${metadata:A}
30cd ${base:h}
31
32input=${base}
33
34typeset -a extraArgs
35extraArgs=(-R -V "geometry=margin=2cm" -V "fontfamily=libertine" -H ${buildDir}/preamble.tex --listings --latex-engine=lualatex --filter=pandoc-citeproc --biblatex)
36
37
38if [[ -n ${metadata} ]]; then
39 input=$(mktemp)
40 cleanupList+=("rm -v ${input}")
41
42 logged pandoc -f markdown -t native -s ${metadata} | head -n -1 >>${input}
43 logged pandoc -R -t native ${base} >>${input}
44
45 extraArgs+=(-f native)
46fi
47
48# logged pandoc ${extraArgs} -t latex ${base} | cat -n >&2
49
50compileDir=$(mktemp -d)
51cleanupList+=("cd /" "rm -rfv ${compileDir}")
52
53logged pandoc ${extraArgs} -t latex -o ${compileDir}/${base:t:r}.tex ${input} >&2
54
55cd ${compileDir}
56for f (bib); do
57 printf "Checking for ā€˜%sā€™\n" ${base:h}/${f} >&2
58 [[ -e ${base:h}/${f} ]] || continue
59 logged rsync -av ${base:h}/${f} .
60done
61
62max=5
63runs=0
64run=true
65while ${run} && [[ ${runs} -lt ${max} ]]; do
66 output=$(mktemp)
67 cleanupList+=("rm -v ${output}")
68 logged lualatex ${base:t:r}.tex >${output} </dev/null
69 ( return $ret ) || { logged cat ${output}; break }
70 grep -C 2 -i "warning" ${output}
71 run=false
72 grep -Eq $'(\\(re\\)run Biber)|(Please rerun LaTeX)' ${output} && run=true
73 [[ -e ${base:t:r}.bcf && runs -eq 0 ]] && logged biber ${base:t:r}
74 runs=$((runs + 1))
9done 75done
76
77cp -v ${base:t:r}.pdf $1
diff --git a/gup/ps.gup b/gup/ps.gup
new file mode 100644
index 0000000..f4d158e
--- /dev/null
+++ b/gup/ps.gup
@@ -0,0 +1,7 @@
1#!/usr/bin/env zsh
2
3base=${2:r}.pdf
4
5gup -u ${base}
6
7pdf2ps ${base} $1 \ No newline at end of file
diff --git a/preamble.tex b/preamble.tex
index f0d802c..183313b 100644
--- a/preamble.tex
+++ b/preamble.tex
@@ -6,9 +6,24 @@
6\usepackage{bussproofs} 6\usepackage{bussproofs}
7\usepackage{tikz} 7\usepackage{tikz}
8\usepackage{tikz-qtree,tikz-qtree-compat,circuitikz} 8\usepackage{tikz-qtree,tikz-qtree-compat,circuitikz}
9\usepackage{translations}
10\usepackage{float}
11\usepackage{csquotes}
12\usepackage{stmaryrd}
13\usepackage{cancel}
14\usepackage{array}
9 15
10\renewcommand{\algorithmicrequire}{\textbf{Input:}} 16\usetikzlibrary{positioning}
11\renewcommand{\algorithmicensure}{\textbf{Output:}} 17
18\newcolumntype{L}{>{$}l<{$}}
19\newcolumntype{C}{>{$}c<{$}}
20
21\DeclareTranslation{English}{float-algorithm}{Algorithm}
22\DeclareTranslation{German}{float-algorithm}{Algorithmus}
23
24\floatstyle{ruled}
25\newfloat{algorithm}{tbp}{lop}
26\floatname{algorithm}{\GetTranslation{float-algorithm}}
12 27
13\lstset{ 28\lstset{
14frame=tb, 29frame=tb,
@@ -30,5 +45,79 @@ keywordstyle=
30\providecommand{\limplies}{\ensuremath{\Rightarrow}} 45\providecommand{\limplies}{\ensuremath{\Rightarrow}}
31\providecommand{\seq}{\ensuremath{\Longrightarrow}} 46\providecommand{\seq}{\ensuremath{\Longrightarrow}}
32 47
33\theoremstyle{definition} 48\DeclareTranslation{English}{thm-definition}{Definition}
34\newtheorem*{def*}{Definition} 49\DeclareTranslation{German}{thm-definition}{Definition}
50\DeclareTranslation{English}{thm-theorem}{Theorem}
51\DeclareTranslation{German}{thm-theorem}{Satz}
52\DeclareTranslation{English}{thm-example}{Example}
53\DeclareTranslation{German}{thm-example}{Beispiel}
54\DeclareTranslation{English}{thm-remark}{Remark}
55\DeclareTranslation{German}{thm-remark}{Anmerkung}
56\DeclareTranslation{English}{thm-lemma}{Lemma}
57\DeclareTranslation{German}{thm-lemma}{Lemma}
58\DeclareTranslation{English}{thm-proofsketch}{Proof Sketch}
59\DeclareTranslation{German}{thm-proofsketch}{Beweisskizze}
60\DeclareTranslation{English}{thm-show}{To show}
61\DeclareTranslation{German}{thm-show}{Zu Zeigen}
62
63\makeatletter
64\newtheoremstyle{definition.indented}
65 {3pt}% space before
66 {3pt}% space after
67 {\addtolength{\@totalleftmargin}{2.5em}
68 \addtolength{\linewidth}{-2.5em}
69 \parshape 1 2.5em \linewidth}% body font
70 {}% indent
71 {\bfseries}% header font
72 {.}% punctuation
73 {.5em}% after theorem header
74 {}% header specification (empty for default)
75\newtheoremstyle{plain.indented}
76 {3pt}% space before
77 {3pt}% space after
78 {\addtolength{\@totalleftmargin}{2.5em}
79 \addtolength{\linewidth}{-2.5em}
80 \parshape 1 2.5em \linewidth
81 \itshape}% body font
82 {}% indent
83 {\bfseries}% header font
84 {.}% punctuation
85 {.5em}% after theorem header
86 {}% header specification (empty for default)
87\newtheoremstyle{remark.indented}
88 {3pt}% space before
89 {3pt}% space after
90 {\addtolength{\@totalleftmargin}{2.5em}
91 \addtolength{\linewidth}{-2.5em}
92 \parshape 1 2.5em \linewidth}% body font
93 {}% indent
94 {\itshape}% header font
95 {.}% punctuation
96 {.5em}% after theorem header
97 {}% header specification (empty for default)
98\makeatother
99
100\theoremstyle{definition.indented}
101\newtheorem{defn}{\GetTranslation{thm-definition}}
102\newtheorem*{defn*}{\GetTranslation{thm-definition}}
103
104\theoremstyle{plain.indented}
105\newtheorem{thm}{\GetTranslation{thm-theorem}}
106\newtheorem*{thm*}{\GetTranslation{thm-theorem}}
107\newtheorem{lem}[thm]{\GetTranslation{thm-lemma}}
108\newtheorem*{lem*}{\GetTranslation{thm-lemma}}
109
110\theoremstyle{remark.indented}
111\newtheorem{rem}{\GetTranslation{thm-remark}}
112\newtheorem*{rem*}{\GetTranslation{thm-remark}}
113\newtheorem{eg}[rem]{\GetTranslation{thm-example}}
114\newtheorem*{eg*}{\GetTranslation{thm-example}}
115\newtheorem*{sketch}{\GetTranslation{thm-proofsketch}}
116\newtheorem*{tshow}{\GetTranslation{thm-show}}
117
118\newcommand\restr[2]{{% we make the whole thing an ordinary symbol
119 \left.\kern-\nulldelimiterspace % automatically resize the bar with \right
120 #1 % the function
121 \vphantom{\big|} % pretend it's a little taller at normal size
122 \right|_{#2} % this is the delimiter
123 }}
diff --git a/shell.nix b/shell.nix
index 19a4096..60e1a1d 100644
--- a/shell.nix
+++ b/shell.nix
@@ -11,9 +11,10 @@ pkgs.stdenv.mkDerivation rec {
11 (pkgs.callPackage ./mars.nix {}) 11 (pkgs.callPackage ./mars.nix {})
12 pkgs.sqlite 12 pkgs.sqlite
13 (pkgs.haskellPackages.ghcWithPackages (p: 13 (pkgs.haskellPackages.ghcWithPackages (p:
14 with p; [ yesod yesod-bin pandoc monad-par persistent-sqlite containers base-unicode-symbols containers-unicode-symbols 14 with p; [ yesod yesod-bin pandoc pandoc-citeproc monad-par persistent-sqlite containers base-unicode-symbols containers-unicode-symbols
15 ])) 15 ]))
16 pkgs.texlive.combined.scheme-full 16 pkgs.texlive.combined.scheme-full
17 pkgs.biber
17 ]; 18 ];
18 shellHook = '' 19 shellHook = ''
19 export PROMPT_INFO="${name}" 20 export PROMPT_INFO="${name}"