-
Notifications
You must be signed in to change notification settings - Fork 0
/
boobytraps-latex-preamble.tex
98 lines (90 loc) · 3.21 KB
/
boobytraps-latex-preamble.tex
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
\usepackage{multicol}
\usepackage{tikz}
\usepackage{booktabs}
\def\BThighlightcolor{yellow}
\def\BTwallcolor{gray}
\def\BTtrapcolor{red}
\def\BTpathcolor{green!60!black}
\let\BTmaybepathcolor\BTpathcolor
\def\BTnopathcolor{red!60!black}
\def\BTstartcolor{blue!85!black}
\def\BTendcolor{red!75!black}
\def\BTnodecolor{black}
\def\BTedgecolor{black}
\newif\ifstartedinmathmode
\newcommand*{\BTunderline}[1]{
\relax\ifmmode\startedinmathmodetrue\else\startedinmathmodefalse\fi
\tikz[baseline=(underlined.base)]{
\node[inner sep=1pt,outer sep=0pt] (underlined) {\ifstartedinmathmode$#1$\else#1\fi};
\draw[\BTpathcolor,solid,line width=1.16pt] (underlined.south west) -- (underlined.south east);
}
}
\newcommand*{\BTmaybeunderline}[1]{
\relax\ifmmode\startedinmathmodetrue\else\startedinmathmodefalse\fi
\tikz[baseline=(underlined.base)]{
\node[inner sep=1pt,outer sep=0pt] (underlined) {\ifstartedinmathmode$#1$\else#1\fi};
\draw[\BTmaybepathcolor,dotted,line width=1.16pt] (underlined.south west) -- (underlined.south east);
}
}
\newcommand*{\BTnounderline}[1]{
\relax\ifmmode\startedinmathmodetrue\else\startedinmathmodefalse\fi
\tikz[baseline=(underlined.base)]{
\node[inner sep=1pt,outer sep=0pt] (underlined) {\ifstartedinmathmode$#1$\else#1\fi};
\draw[\BTnopathcolor,dotted,line width=1.16pt] (underlined.south west) -- (underlined.south east);
}
}
\newcommand*{\BThighlighttext}[1]{
\relax\ifmmode\startedinmathmodetrue\else\startedinmathmodefalse\fi
\tikz[baseline=(highlighted.base)]{
\node[rectangle,fill=\BThighlightcolor,inner sep=1.16pt] (highlighted) {\ifstartedinmathmode$#1$\else#1\fi};
}
}
\newcommand*{\BTvphantomfix}{
\vphantom{\BTmaybeunderline{(0,0)}\BTnounderline{(0,0)}\BThighlighttext{(0,0)}[],()}
}
\newcommand{\BTmap}[2]{ % scale factor, draw commands
\begin{center}
\sffamily
\begin{tikzpicture}[y=-1cm,scale=#1,every node/.style={transform shape}]
#2
\end{tikzpicture}
\end{center}
}
\newcommand{\BThighlight}[2]{ % x, y
\fill[\BThighlightcolor] (#1,#2) rectangle (#1+1,#2+1);
}
\newcommand{\BTwall}[2]{ % x, y
\fill[\BTwallcolor] (#1,#2) rectangle (#1+1,#2+1);
}
\newcommand{\BTtrap}[3]{ % x, y, char
\node at (#1+0.5,#2+0.5) {\LARGE\bfseries\color{\BTtrapcolor} #3};
}
\newcommand{\BTpath}[1]{ % (x1,y1) -- ... -- (xn,yn)
\draw[\BTpathcolor, solid, very thick] #1;
}
\newcommand{\BTmaybepath}[1]{ % (x1,y1) -- ... -- (xn,yn)
\draw[\BTmaybepathcolor, dotted, very thick] #1;
}
\newcommand{\BTnopath}[1]{ % (x1,y1) -- ... -- (xn,yn)
\draw[\BTnopathcolor, dotted, very thick] #1;
}
\newcommand{\BTstart}[2]{ % x, y
\path[fill=\BTstartcolor] (#1+0.5,#2+0.5) circle (0.25);
}
\newcommand{\BTend}[2]{ % x, y
\path[fill=\BTendcolor] (#1+0.5,#2+0.5) circle (0.25);
}
\newcommand{\BTgrid}[2]{ % width, height
\draw[xstep=1,ystep=-1,black,thick] (0,0) grid (#1,#2);
}
\newcommand{\BTcoords}[2]{ % width, height
\foreach \nx in {0,...,\numexpr#1-1\relax}
\foreach \my in {0,...,\numexpr#2-1\relax}
\node[anchor=west,inner sep=0] at (\nx+0.05,\my+0.18) {\tiny(\nx,\my)};
}
\newcommand{\BTnode}[2]{ % x, y
\path[fill=\BTnodecolor] (#1+0.8,#2+0.8) circle (0.125);
}
\newcommand{\BTedge}[4]{ % first node position & second node position
\draw[\BTedgecolor, solid, very thick] (#1+0.8,#2+0.8) -- (#3+0.8,#4+0.8);
}