-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcrygame-slow.sty
142 lines (120 loc) · 2.41 KB
/
crygame-slow.sty
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
% Author: Sven Laur (https://github.com/swenlaur)
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{game-alg}
\RequirePackage{amssymb}
\RequirePackage{amsmath}
\RequirePackage{array}
% Lengths for restoring old values
\newlength{\oldarrayrulewidth}
\newlength{\oldtabcolsep}
\newlength{\algblocksep}
% A vertical space after if, for and while blocks
\setlength{\algblocksep}{2.0ex}
% Phantom line
\newcommand{\vspacex}[1]{\raisebox{-#1}{\rule{0pt}{#1}}}
\newcommand{\addalgblockspace}{\raisebox{-\algblocksep}{\rule{0pt}{\algblocksep}}}
% Code block
% A complex wrapper that builds a tabular around the code block
% to get the nice square bracket with constant with to the right.
% Externally behaves like ordinary align environment exept
% each line must start width & and end with \\
% Recursive nesting is allowed.
% (Extra spaces are deliberately commented out)
\newenvironment{cblock}
{%
\setlength{\oldarrayrulewidth}{\arrayrulewidth}%
\setlength{\oldtabcolsep}{\tabcolsep}%
\setlength{\arrayrulewidth}{0.62pt}%
\setlength{\tabcolsep}{0em}%
\begin{tabular}{|m{0.2em}>{\hspace*{0.1em}$}l<{$}}
\cline{1-1}
}
{
\\
\cline{1-1}
\end{tabular}%
\setlength{\arrayrulewidth}{\oldarrayrulewidth}%
\setlength{\tabcolsep}{\oldtabcolsep}%
}
% A game block
\newenvironment{game}[1]
{%
\begin{tabular}{l}%
\ensuremath{#1} \\
\begin{cblock}%
}
{%
\end{cblock}%
\end{tabular}%
}
% A function block
\newenvironment{fblock}[1]
{%
\begin{tabular}{l}%
\ensuremath{#1} \\
\begin{cblock}%
}
{%
\end{cblock}%
\end{tabular}%
}
% A while loop block
\newenvironment{whileblock}[1]
{%
\begin{tabular}{l}%
\WHILE \ensuremath{#1}\ \DO \\
\begin{cblock}%
}
{%
\end{cblock}%
\addalgblockspace%
\end{tabular}%
}
% A for block
\newenvironment{forblock}[1]
{%
\begin{tabular}{l}%
\FOR \ensuremath{#1}\ \DO \\
\begin{cblock}%
}
{%
\end{cblock}%
\addalgblockspace%
\end{tabular}%
}
% A if block
\newenvironment{ifblock}[1]
{%
\begin{tabular}{l}%
\IF \ensuremath{#1}\ \THEN \\
\begin{cblock}%
}
{%
\end{cblock}%
\addalgblockspace%
\end{tabular}%
}
% A if block
\newenvironment{elseifblock}[1]
{%
\begin{tabular}{l}%
\ELSE \IF \ensuremath{#1}\ \THEN \\
\begin{cblock}%
}
{%
\end{cblock}%
\addalgblockspace%
\end{tabular}%
}
% A else block
\newenvironment{elseblock}
{%
\begin{tabular}{l}%
\ELSE \\
\begin{cblock}%
}
{%
\end{cblock}%
\addalgblockspace%
\end{tabular}%
}