Index: doc/theses/jiada_liang_MMath/background.tex
===================================================================
--- doc/theses/jiada_liang_MMath/background.tex	(revision 4da914224e5b446785ef95fd5e05cba53d2518f7)
+++ doc/theses/jiada_liang_MMath/background.tex	(revision 566cc33ae374c458f72fbc1e3db85c204344608c)
@@ -1,4 +1,3 @@
 \chapter{Background}
-\lstnewenvironment{clang}[1][]{\lstset{language=[ANSI]C,escapechar=\$,moredelim=**[is][\color{red}]{@}{@},}\lstset{#1}}{}
 
 \CFA is a backwards-compatible extension of the C programming language.
Index: doc/theses/jiada_liang_MMath/relatedwork.tex
===================================================================
--- doc/theses/jiada_liang_MMath/relatedwork.tex	(revision 4da914224e5b446785ef95fd5e05cba53d2518f7)
+++ doc/theses/jiada_liang_MMath/relatedwork.tex	(revision 566cc33ae374c458f72fbc1e3db85c204344608c)
@@ -23,5 +23,4 @@
 \section{Pascal}
 \label{s:Pascal}
-\lstnewenvironment{pascal}[1][]{\lstset{language=pascal,escapechar=\$,moredelim=**[is][\color{red}]{@}{@},}\lstset{#1}}{}
 
 Classic Pascal has the \lstinline[language=pascal]{const} declaration binding a name to a constant literal/expression.
@@ -51,5 +50,4 @@
 
 \section{Ada}
-\lstnewenvironment{ada}[1][]{\lstset{language=[2005]Ada,escapechar=\$,moredelim=**[is][\color{red}]{@}{@},literate={'}{\ttfamily'\!}1}\lstset{#1}}{}
 
 An Ada enumeration type is a set of ordered unscoped identifiers (enumerators) bound to \emph{unique} \Newterm{literals}.\footnote{%
@@ -216,5 +214,4 @@
 \section{\CC}
 \label{s:C++RelatedWork}
-\lstnewenvironment{c++}[1][]{\lstset{language=[GNU]C++,escapechar=\$,moredelim=**[is][\color{red}]{@}{@},}\lstset{#1}}{}
 
 \CC has the equivalent of Pascal typed @const@ declarations \see{\VRef{s:Pascal}}, with static and dynamic initialization.
@@ -310,5 +307,4 @@
 \section{C\raisebox{-0.7ex}{\LARGE$^\sharp$}\xspace} % latex bug: cannot use \relsize{2} so use \LARGE
 \label{s:Csharp}
-\lstnewenvironment{csharp}[1][]{\lstset{language=[Sharp]C,escapechar=\$,moredelim=**[is][\color{red}]{@}{@},}\lstset{#1}}{}
 
 % https://www.tutorialsteacher.com/codeeditor?cid=cs-mk8Ojx
@@ -410,5 +406,4 @@
 
 \section{Golang}
-\lstnewenvironment{Go}[1][]{\lstset{language=Go,escapechar=\$,moredelim=**[is][\color{red}]{@}{@},}\lstset{#1}}{}
 
 Golang provides pseudo-enumeration similar to classic Pascal \lstinline[language=pascal]{const}, binding a name to a constant literal/expression.
@@ -475,6 +470,4 @@
 
 \section{Java}
-\lstnewenvironment{Java}[1][]{\lstset{language=Java,morekeywords={enum,assert,strictfp},
-	escapechar=\$,moredelim=**[is][\color{red}]{!}{!},}\lstset{#1}}{}
 
 Every enumeration in Java is an enumeration class.
@@ -591,5 +584,4 @@
 
 \section{Rust}
-\lstnewenvironment{rust}[1][]{\lstset{language=Rust,escapechar=\$,moredelim=**[is][\color{red}]{@}{@},}\lstset{#1}}{}
 % https://doc.rust-lang.org/reference/items/enumerations.html
 
@@ -638,5 +630,4 @@
 
 \section{Swift}
-\lstnewenvironment{swift}[1][]{\lstset{language=Swift,escapechar=\$,moredelim=**[is][\color{red}]{@}{@},}\lstset{#1}}{}
 
 % https://www.programiz.com/swift/online-compiler
@@ -997,5 +988,4 @@
 
 \section{Python 3.13}
-\lstnewenvironment{python}[1][]{\lstset{language=Python,escapechar=\$,moredelim=**[is][\color{red}]{@}{@},}\lstset{#1}}{}
 % https://docs.python.org/3/howto/enum.html
 
@@ -2160,5 +2150,4 @@
 
 \section{OCaml}
-\lstnewenvironment{ocaml}[1][]{\lstset{language=OCaml,escapechar=\$,moredelim=**[is][\color{red}]{@}{@},}\lstset{#1}}{}
 
 % https://ocaml.org/docs/basic-data-types#enumerated-data-types
Index: doc/theses/jiada_liang_MMath/uw-ethesis.tex
===================================================================
--- doc/theses/jiada_liang_MMath/uw-ethesis.tex	(revision 4da914224e5b446785ef95fd5e05cba53d2518f7)
+++ doc/theses/jiada_liang_MMath/uw-ethesis.tex	(revision 566cc33ae374c458f72fbc1e3db85c204344608c)
@@ -95,4 +95,20 @@
 \CFAStyle						% CFA code-style
 \lstset{language=cfa,belowskip=-1pt} % set default language to CFA
+\lstnewenvironment{ada}[1][]{\lstset{language=[2005]Ada,escapechar=\$,moredelim=**[is][\color{red}]{@}{@},literate={'}{\ttfamily'\!}1}\lstset{#1}}{}
+\lstnewenvironment{c++}[1][]{\lstset{language=[GNU]C++,escapechar=\$,moredelim=**[is][\color{red}]{@}{@},}\lstset{#1}}{}
+\lstnewenvironment{pascal}[1][]{\lstset{language=pascal,escapechar=\$,moredelim=**[is][\color{red}]{@}{@},}\lstset{#1}}{}
+\lstnewenvironment{csharp}[1][]{\lstset{language=[Sharp]C,escapechar=\$,moredelim=**[is][\color{red}]{@}{@},}\lstset{#1}}{}
+\lstnewenvironment{clang}[1][]{\lstset{language=[ANSI]C,escapechar=\$,moredelim=**[is][\color{red}]{@}{@},}\lstset{#1}}{}
+\lstnewenvironment{Go}[1][]{\lstset{language=Go,escapechar=\$,moredelim=**[is][\color{red}]{@}{@},}\lstset{#1}}{}
+\lstnewenvironment{haskell}[1][]{\lstset{language=Haskell,escapechar=\$,moredelim=**[is][\color{red}]{@}{@},}\lstset{#1}}{}
+\lstnewenvironment{Java}[1][]{\lstset{language=Java,morekeywords={enum,assert,strictfp},
+	escapechar=\$,moredelim=**[is][\color{red}]{!}{!},}\lstset{#1}}{}
+\lstnewenvironment{rust}[1][]{\lstset{language=Rust,escapechar=\$,moredelim=**[is][\color{red}]{@}{@},}\lstset{#1}}{}
+\lstnewenvironment{swift}[1][]{\lstset{language=Swift,escapechar=\$,moredelim=**[is][\color{red}]{@}{@},}\lstset{#1}}{}
+\lstnewenvironment{python}[1][]{\lstset{language=Python,escapechar=\$,moredelim=**[is][\color{red}]{@}{@},}\lstset{#1}}{}
+\lstnewenvironment{ocaml}[1][]{\lstset{language=OCaml,escapechar=\$,moredelim=**[is][\color{red}]{@}{@},}\lstset{#1}}{}
+
+\newsavebox{\myboxA}
+\newsavebox{\myboxB}
 
 \newcommand{\newtermFont}{\emph}
