-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsettings.sty
More file actions
103 lines (99 loc) · 5.44 KB
/
settings.sty
File metadata and controls
103 lines (99 loc) · 5.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
% !TeX root = principles-of-programming-languages-reference.tex
% required packages
\usepackage[compact]{titlesec} % for tighter titles
\usepackage[utf8]{inputenc} % for utf8 encoding
\usepackage{listings} % for code listings
\usepackage{multicol} % for multiple columns layout
\usepackage{textcomp} % for text symbols
\usepackage{geometry} % for page geometry
\usepackage{enumitem} % for numbered lists
\usepackage{xcolor} % for colors
\usepackage{xspace} % for spaces after commands
\usepackage{hyperref} % for hyperlinks
\usepackage{ccicons} % for creative commons icons
\usepackage{datetime2} % for date formatting
% font settings
\usepackage[sfdefault,light,condensed]{roboto}
\usepackage[T1]{fontenc}
% page geometry
\geometry{left=2cm,right=2cm,bottom=2cm,top=2cm}
% columns spacing
\setlength{\columnsep}{1.1em}
% tighter titles, sections, etc.
\titlespacing{\section}{0pt}{1em}{0.5em}
\titlespacing{\subsection}{0pt}{0.5em}{0.25em}
\titlespacing{\subsubsection}{0pt}{0.5em}{0.25em}
\titlespacing{\paragraph}{0pt}{0.5em}{0.25em}
% remove paragraph indentation
\setlength{\parindent}{0pt}
% add numbering to paragraphs
\setcounter{secnumdepth}{4}
% changed bullet for lists
\renewcommand\labelitemi{\small\bfseries\texttt{>}}
\renewcommand\labelitemii{\small\bfseries\texttt{>}}
% tighter lists
\setlist[itemize]{noitemsep,after=\vspace{0.25em},before=\vspace{0.25em}}
\setlist[enumerate]{noitemsep,after=\vspace{0.25em},before=\vspace{0.25em}}
% remove colored boxes around links
\hypersetup{colorlinks=true,linkcolor=black,urlcolor=black}
% define colors
\definecolor{background}{rgb}{0.95,0.95,0.95}
\definecolor{keyword}{rgb}{0,0.3,0.7}
\definecolor{comment}{rgb}{0.133,0.545,0.133}
\definecolor{string}{rgb}{0.75,0.49,0.07}
% tighter lstlisting
\lstdefinestyle{custom}{
xleftmargin=1em,
xrightmargin=1em,
aboveskip=0em,
belowskip=0.5em,
backgroundcolor=\color{background},
commentstyle=\color{comment},
stringstyle=\color{string},
keywordstyle=\color{keyword},
basicstyle=\small\ttfamily,
upquote=true,
breaklines=true,
breakatwhitespace=true,
literate=*{`}{{`}}{1},
showstringspaces=false,
mathescape=false,
}
% lstlisting default style
\lstset{style=custom}
% lstlisting inline default style
% racket language, based on https://github.com/stuhlmueller/scheme-listings
\lstdefinelanguage{CustomRacket}{
alsoletter={!, ', *, +, -, /, :, =, >, ?},
morekeywords={=, add1, and, append, apply, begin, build-list, caaaar, caaadr, caaar, caadar, caaddr, caadr, caar, cadaar, cadadr, cadar, caddar, cadddr, caddr, cadr, call-with-current-continuation, call-with-input-file, call-with-output-file, call/cc, car, case, cdaaar, cdaadr, cdaar, cdadar, cdaddr, cdadr, cdar, cddaar, cddadr, cddar, cdddar, cddddr, cdddr, cddr, cdr, cond, cons, cons?, count, define, define-macro, define-stream, define-syntax, delay, display, displayln, do, drop, else, empty?, environment, eq?, equal?, eqv?, eval, even?, exact->inexact, exp, export, expt, false?, filter, first, float->integer, fold, foldl, foldr, for, for-each, force, gcd, hash, hash-has-key?, hash-ref, hash-remove, hash-set, if, immutable?, implies, import, in-hash, in-list, in-range, in-set, in-string, in-vector, inexact->exact, integer->float, integer->rational, lambda, last, lcm, length, let, let*, let*-values, let-syntax, let-values, letrec, letrec*, letrec-syntax, list, list->set, list->string, list->vector, list-ref, list-tail, list?, log, make-list, map, match, max, min, negative?, newline, not, null, odd?, or, pair?, positive?, print, printf, println, quasiquote, query, quote, quotient, raise, rational->integer, remainder, rest, reverse, save!, set, set!, set-add, set-member?, set-remove, stream-lambda, string->list, string->vector, string-append, string-length, string-ref, struct, sub1, syntax, syntax-rules, take, true?, unless, unquote, unquote-splicing, vector->list, vector->string, vector-ref, vector-set!, when, with-handlers, xor, zero?,}
sensitive=true,
morecomment=[l]{;},
morecomment=[s]{\#|}{|\#},
morestring=[b]",
}
\lstdefinelanguage{CustomHaskell}{
language=Haskell,
alsoletter={!, \$, &, *, +, -, ., :, <, =, >, [, ], |},
morekeywords={!!, \$, &&, ++, ->, ., :, ::, <*>, <-, >>=, [], Applicative, fmap, Foldable, for, implies, not, xor, ||}
}
\lstdefinelanguage{CustomErlang}{
language=Erlang,
alsoletter={!, \$, +, -, /, :, =, >, ., \,,, ;},
morekeywords={!\$MODULE, ++, ->, -import, :=, =/=, =:=, ==, =>, for, is_atom, is_float, is_integer, is_list, is_map, is_number, is_tuple, lists:append, lists:delete, lists:drop, lists:droplast, lists:filter, lists:first, lists:flatten, lists:foldl, lists:foldr, lists:foreach, lists:last, lists:map, lists:max, lists:min, lists:nth, lists:sublist, ., \,, ;}
}
% command to switch column
\newcommand{\breakcolumn}{\vspace*{\fill}\columnbreak}
% command for inline code
\newcommand{\icode}[2]{\lstinline[language=#1]!#2!}
\newcommand{\iracket}[1]{\icode{CustomRacket}{#1}}
\newcommand{\ihaskell}[1]{\icode{CustomHaskell}{#1}}
\newcommand{\ierlang}[1]{\icode{CustomErlang}{#1}}
% command for code block
\lstnewenvironment{code}[1]{\lstset{language=#1}}{}
\lstnewenvironment{racket}{\lstset{language=CustomRacket}}{}
\lstnewenvironment{haskell}{\lstset{language=CustomHaskell}}{}
\lstnewenvironment{erlang}{\lstset{language=CustomErlang}}{}
% placeholder for missing content: MISSING in bold red
\newcommand{\missing}{\textcolor{red}{\large\xspace\textbf{MISSING}}\xspace}
% placeholder for TODO: TODO in bold orange
\newcommand{\todo}{\textcolor{orange}{\xspace\textbf{TODO}}\xspace}