updates
authorMart Lubbers <mart@martlubbers.net>
Thu, 16 Feb 2023 17:57:49 +0000 (18:57 +0100)
committerMart Lubbers <mart@martlubbers.net>
Thu, 16 Feb 2023 17:57:49 +0000 (18:57 +0100)
appx/c4hp.tex
latexmkrc
preamble.tex
preamble/bibliography.tex
preamble/commands.tex
preamble/glossaries.tex
preamble/internationalisation.tex
preamble/listings.tex
preamble/typography.tex
thesis.tex

index 56b80b0..7c986f2 100644 (file)
@@ -15,7 +15,7 @@ Obviously, this summary is not exhaustive.
 Some \gls{CLEAN} language elements that are not easily translatable to \gls{HASKELL} and thus do not occur in the summary following below.
 We hope you enjoy these notes and that it aids you in reading \gls{CLEAN} programs.
 
-\Gls{CLEAN}---acronym for Clean \glsxtrlong{LEAN} \citep{barendregt_towards_1987}---, was originally designed as a \gls{GRS} core language but quickly served as an intermediate language for other functional languages \citep{brus_clean_1987}.
+\Gls{CLEAN}---acronym for Clean Language of East-Anglia and Nijmegen \citep{barendregt_towards_1987}---, was originally designed as a \gls{GRS} core language but quickly served as an intermediate language for other functional languages \citep{brus_clean_1987}.
 In the early days it has also been called \emph{Concurrent} \gls{CLEAN} \citep{nocker_concurrent_1991} but these days the language has no support for concurrency anymore.
 Fast-forward thirty years, \gls{CLEAN} is now a robust language with state-of-the-art features and is actually used in industry as well as academia---albeit in select areas of the world.
 
index 690ee71..0b88e75 100644 (file)
--- a/latexmkrc
+++ b/latexmkrc
@@ -35,7 +35,6 @@ push @generated_exts, 'sta';
 
 # Clean bbl file as well
 $bibtex_use = 2;
-$bibtex = "bibtex8 --wolfgang %O %S";
 
 # Clean mkindex files
 $clean_ext .= ' %R.ist %R.xdy';
index b5b123e..ae176ee 100644 (file)
@@ -1,5 +1,23 @@
 \usepackage[utf8]{inputenc}  % Input encoding
 \usepackage[T2A,T1]{fontenc} % Font encoding
+\usepackage{ifxetex}
+\ifxetex%
+       \usepackage{amsmath}        % extra math
+       \usepackage{fontspec}
+       \usepackage{polyglossia}
+       \setmainlanguage[variant=british]{english}
+       \setotherlanguage{dutch}
+       \setotherlanguage{russian}
+       \newfontfamily{\cyrillicfont}{Liberation Serif}
+\else
+       \usepackage{lmodern}        % Nicer font
+       \usepackage{microtype}      % Better kerning
+       \usepackage{amsmath}        % extra math
+       \usepackage{amssymb}        % extra math symbols
+
+       \usepackage[dutch,russian,british]{babel}
+%      \babelfont[russian]{rm}{Liberation Serif}
+\fi
 
 % Typography, widows, orphans, fonts
 \input{preamble/typography}
@@ -35,4 +53,4 @@
 \usepackage{subfiles}
 
 % Metadata (only works in main document) and should go after subfiles
-\input{preamble/metadata}
+%\input{preamble/metadata}
index b658bb5..b755bda 100644 (file)
@@ -4,7 +4,7 @@
 %\setcitestyle{numbers}
 %\bibliographystyle{alpha}
 \bibliographystyle{abbrvnat}
-\apptocmd{\thebibliography}{\raggedright}{}{}
+%\apptocmd{\thebibliography}{\raggedright}{}{}
 
 \makeatletter
 \let\saved@bibitem\@bibitem%
index 9f4a809..955cfc0 100644 (file)
@@ -3,7 +3,7 @@
 \newcommand{\aramsingh}{Ramsingh, A.\ (University of Glasgow)}
 \newcommand{\dcolon}[0]{\mathbin{::}}
 \newcommand{\doifmt}[1]{\href{https://doi.org/#1}{#1}}
-\newcommand{\etc}{{\fontfamily{cmr}\selectfont{\itshape\/\&\kern-0.2em c}}}
+\newcommand{\etc}{{\itshape\/\&\kern-0.2em c}}
 \newcommand{\jsinger}{Singer, J.\ (University of Glasgow)}
 \newcommand{\mlubbers}{Lubbers, M.\ (Radboud University)}
 \newcommand{\pkoopman}{Koopman, P.\ (Radboud University)}
index 661ddc1..97975b6 100644 (file)
-\usepackage[nolangwarn,abbreviations,nonumberlist,prefix]{glossaries-extra}
+\usepackage[nolangwarn,nonumberlist,prefix]{glossaries-extra}
 \setabbreviationstyle{long-short-sc}
 \setabbreviationstyle[noexpand]{short-nolong}
+\setabbreviationstyle[scabbr]{short-sc-nolong}
 \Addlcwords{of}
+\glssetcategoryattribute{abbreviation}{glossname}{uc}
+\glssetcategoryattribute{noexpand}{glossname}{uc}
+\glssetcategoryattribute{scabbr}{glossname}{uc}
+\GlsXtrEnableInitialTagging{acronym,abbreviation}{\itag}
+
+\newcommand*{\glsxtrpostnameacronym}{%
+       \space\rm\glsentrylong{\glscurrententrylabel}, %
+}
+%\renewcommand*{\glsxtrpostdescabbreviation}{%
+% \space (initialism)%
+%}
+
 \usepackage{glossary-mcols}
 \pdfstringdefDisableCommands{%
        \def\glsxtrlong#1{}%
        \def\glsxtrlongpl#1{}%
        \def\glsxtrshort#1{}%
        \def\glsxtrshortpl#1{}%
-       \def\acrfull#1{}%
-       \def\acrfullpl#1{}%
        \def\Glsxtrlong#1{}%
        \def\Glsxtrlongpl#1{}%
        \def\Glsxtrshort#1{}%
        \def\Glsxtrshortpl#1{}%
-       \def\Acrfull#1{}%
-       \def\Acrfullpl#1{}%
        \def\gls#1{}%
        \def\glspl#1{}%
-       \def\glsentrytext#1{}%
        \def\Gls#1{}%
        \def\Glspl#1{}%
-       \def\Glsentrytext#1{}%
-       \def\titlecap#1{}%
        \def\MakeUppercase#1{}%
 }
 
 % Initialize the glossaries
 \makeglossaries%
 
-% Acronym
-\newcommand{\myacronym}[4][]{%
-%      \newacronym[type=\glsdefaulttype,#1]{#2}{#3}{#4}
-       \newabbreviation[#1]{#2}{#3}{#4}
-}
-\myacronym[category=noexpand]{3COWS}{3cows}{The three ``CO'' (Composability, Comprehensibility, Correctness) winter school}
-\myacronym{ADC}{adc}{analog-to-digital converter}
-\myacronym{ADT}{adt}{algebraic data type}
-\myacronym{AST}{ast}{abstract syntax tree}
-\myacronym{API}{api}{application programming interface}
-\myacronym{ARDSL}{ardsl}{\gls{ARDUINO} \glsxtrshort{DSL}}
-\myacronym[category=noexpand]{CEFP}{cefp}{Central European \glsxtrlong{FP} School}
-\myacronym{CRS}{crs}{\gls{CLEAN} Raspberry Pi system}
-\myacronym{CRTS}{crts}{\gls{CLEAN} Raspberry Pi temperature sensor}
-\myacronym{CWS}{cws}{\gls{CLEAN} \gls{WEMOS} system}
-\myacronym{CWTS}{cwts}{\gls{CLEAN} \gls{WEMOS} temperature sensor}
-\myacronym{DHT}{dht}{digital humidity and temperature}
-\myacronym{DSL}{dsl}{domain-specific language}
-\myacronym{DVFS}{dvfs}{dynamic voltage and frequency scaling}
-\myacronym{ECO2}{eCO\textsubscript{2}}{equivalent carbon dioxide}
-\myacronym{EDSL}{edsl}{embedded \glsxtrlong{DSL}}
-\myacronym[prefixfirst={a\ },prefix={an\ }]{FP}{fp}{functional programming}
-\myacronym[prefixfirst={a\ },prefix={an\ }]{FRP}{frp}{functional reactive programming}
-\myacronym[prefixfirst={a\ },prefix={an\ }]{FPGA}{fpga}{field-programmable gate array}
-\myacronym{GADT}{gadt}{generalised \glsxtrshort{ADT}}
-\myacronym{GHC}{ghc}{Glasgow \gls{HASKELL} Compiler}
-\myacronym{GPIO}{gpio}{general-purpose \glsxtrlong{IO}}
-\myacronym{GPL}{gpl}{general-purpose language}
-\myacronym{GRS}{grs}{graph rewriting system}
-\myacronym{GUI}{gui}{graphical \glsxtrlong{UI}}
-\myacronym{HOAS}{hoas}{high-order abstract syntax}
-\myacronym{IOT}{Io\kern-.3mmT}{internet of things}
-\myacronym[category=noexpand]{IDE}{ide}{integrated development environment}
-\myacronym[category=noexpand]{IO}{i/o}{input/output}
-\myacronym{IR}{ir}{intermediate representation}
-\myacronym{ISR}{isr}{interrupt service routine}
-\myacronym{LEAN}{lean}{language of East-Anglia and Nijmegen}
-\myacronym[category=noexpand,prefixfirst={a\ },prefix={an\ }]{LED}{led}{light-emitting diode}
-\myacronym[category=noexpand]{OLED}{oled}{organic \glsxtrshort{LED}}
-\myacronym[category=noexpand]{OS}{os}{operating system}
-\myacronym{OTA}{ota}{over-the-air}
-\myacronym{PIR}{pir}{passive infrared}
-\myacronym{PFRP}{p-frp}{priority-based \glsxtrshort{FRP}}
-\myacronym{PRS}{prs}{\gls{PYTHON} Raspberry Pi system}
-\myacronym{PWS}{pws}{\gls{MICROPYTHON} \gls{WEMOS} system}
-\myacronym{PRTS}{prts}{\gls{PYTHON} Raspberry Pi temperature sensor}
-\myacronym{PWTS}{pwts}{\gls{MICROPYTHON} \gls{WEMOS} temperature sensor}
-\myacronym{QDSL}{qdsl}{quoted \glsxtrshort{DSL}}
-\myacronym[category=noexpand]{RAM}{ram}{random-access memory}
-\myacronym{RFID}{rfid}{radio-frequency identification}
-\myacronym{RTOS}{rtos}{real-time \glsxtrshort{OS}}
-\myacronym{RTS}{rts}{run-time system}
-\myacronym[prefixfirst={a\ },prefix={an\ }]{SDS}{sds}{shared data source}
-\myacronym[prefixfirst={a\ },prefix={an\ }]{SN}{sn}{sensor network}
-\myacronym{SLOC}{sloc}{source lines of code}
-\myacronym{TH}{th}{Template \gls{HASKELL}}
-\myacronym[category=noexpand]{TCP}{tcp}{transmission control protocol}
-\myacronym{TOP}{top}{task-oriented programming}
-\myacronym{TOSD}{tosd}{task-oriented software development}
-\myacronym{TRS}{trs}{term rewriting system}
-\myacronym{TTH}{tth}{typed \glsxtrlong{TH}}
-\myacronym{TVOC}{tvoc}{total volatile organic compounds}
-\myacronym{UI}{ui}{user interface}
-\myacronym{UOD}{uod}{universe of discourse}
-\myacronym{UOG}{uog}{University of Glasgow}
-\myacronym{VM}{vm}{virtual machine}
+% Acronyms
+\newacronym[description={the CO\textsubscript{2} concentration calculated from \glsxtrshort{TVOC} measurements}]{ECO2}{(eCO\textsubscript{2})}{equivalent carbon dioxide}
+\newacronym[category=scabbr,description={a open data interchange format using human readable text}]{JSON}{{\scshape JSON}}{(JavaScript object notation)}
+\newacronym[category=scabbr,description={a publish-subscribe network protocol designed for resource constrained devices}]{MQTT}{{\scshape MQTT}}{(MQ telemetry transport)}
+\newacronym[description={a pure lazy \glsxtrlong{FP} language based on graph rewriting}]{CLEAN}{Clean}{(Clean language of East-Anglia and Nijmegen)}
+\newacronym[description={a simple serial communication protocol often used to connect sensors to microcontrollers}]{I2C}{I\textsuperscript{2}C}{(inter-integrated circuit)}
+\newacronym[category=scabbr,description={passive infrared}]{PIR}{{\scshape PIR}}{}
+\newacronym[category=scabbr,description={task-oriented programming}]{TOP}{{\scshape TOP}}{}
+\newacronym[category=scabbr,description={the three ``CO'' (composability, comprehensibility, correctness) of working software}]{3COWS}{{\scshape 3COWS}}{}
+
+% Initialisms
+\newabbreviation{ADC}{adc}{analog-to-digital converter}
+\newabbreviation{ADT}{adt}{algebraic data type}
+\newabbreviation{AST}{ast}{abstract syntax tree}
+\newabbreviation{API}{api}{application programming interface}
+\newabbreviation{ARDSL}{ardsl}{\gls{ARDUINO} \glsxtrshort{DSL}}
+\newabbreviation[category=noexpand]{CEFP}{cefp}{Central European \glsxtrlong{FP} School}
+\newabbreviation{CRS}{crs}{\gls{CLEAN} Raspberry Pi system}
+\newabbreviation{CRTS}{crts}{\gls{CLEAN} Raspberry Pi temperature sensor}
+\newabbreviation{CWS}{cws}{\gls{CLEAN} \gls{WEMOS} system}
+\newabbreviation{CWTS}{cwts}{\gls{CLEAN} \gls{WEMOS} temperature sensor}
+\newabbreviation{DHT}{dht}{digital humidity and temperature}
+\newabbreviation{DSL}{dsl}{domain-specific language}
+\newabbreviation{DVFS}{dvfs}{dynamic voltage and frequency scaling}
+\newabbreviation{EDSL}{edsl}{embedded \glsxtrlong{DSL}}
+\newabbreviation[prefixfirst={a\ },prefix={an\ }]{FP}{fp}{functional programming}
+\newabbreviation[prefixfirst={a\ },prefix={an\ }]{FRP}{frp}{functional reactive programming}
+\newabbreviation[prefixfirst={a\ },prefix={an\ }]{FPGA}{fpga}{field-programmable gate array}
+\newabbreviation{GADT}{gadt}{generalised \glsxtrshort{ADT}}
+\newabbreviation{GHC}{ghc}{Glasgow \gls{HASKELL} Compiler}
+\newabbreviation{GPIO}{gpio}{general-purpose \glsxtrlong{IO}}
+\newabbreviation{GPL}{gpl}{general-purpose language}
+\newabbreviation{GRS}{grs}{graph rewriting system}
+\newabbreviation{GUI}{gui}{graphical \glsxtrlong{UI}}
+\newabbreviation{HOAS}{hoas}{high-order abstract syntax}
+%\newabbreviation{IOT}{Io\kern-.3mmT}{internet of things}
+\newabbreviation{IOT}{iot}{internet of things}
+\newabbreviation[category=noexpand]{IDE}{ide}{integrated development environment}
+\newabbreviation[category=noexpand]{IO}{i/o}{input/output}
+\newabbreviation{IR}{ir}{intermediate representation}
+\newabbreviation{ISR}{isr}{interrupt service routine}
+\newabbreviation[category=noexpand,prefixfirst={a\ },prefix={an\ }]{LED}{led}{light-emitting diode}
+\newabbreviation[category=noexpand]{OLED}{oled}{organic \glsxtrshort{LED}}
+\newabbreviation[category=noexpand]{OS}{os}{operating system}
+\newabbreviation{OTA}{ota}{over-the-air}
+\newabbreviation{PFRP}{p-frp}{priority-based \glsxtrshort{FRP}}
+\newabbreviation{PRS}{prs}{\gls{PYTHON} Raspberry Pi system}
+\newabbreviation{PWS}{pws}{\gls{MICROPYTHON} \gls{WEMOS} system}
+\newabbreviation{PRTS}{prts}{\gls{PYTHON} Raspberry Pi temperature sensor}
+\newabbreviation{PWTS}{pwts}{\gls{MICROPYTHON} \gls{WEMOS} temperature sensor}
+\newabbreviation{QDSL}{qdsl}{quoted \glsxtrshort{DSL}}
+\newabbreviation[category=noexpand]{RAM}{ram}{random-access memory}
+\newabbreviation{RFID}{rfid}{radio-frequency identification}
+\newabbreviation{RTOS}{rtos}{real-time \glsxtrshort{OS}}
+\newabbreviation{RTS}{rts}{run-time system}
+\newabbreviation[prefixfirst={a\ },prefix={an\ }]{SDS}{sds}{shared data source}
+\newabbreviation[prefixfirst={a\ },prefix={an\ }]{SN}{sn}{sensor network}
+\newabbreviation{SLOC}{sloc}{source lines of code}
+\newabbreviation[description={a synchronous serial communication protocol often used to connect sensors to microcontrollers}]{SPI}{SPI}{Serial Peripheral Interface}
+\newabbreviation{TH}{th}{Template \gls{HASKELL}}
+\newabbreviation[category=noexpand]{TCP}{tcp}{transmission control protocol}
+\newabbreviation{TOSD}{tosd}{task-oriented software development}
+\newabbreviation{TRS}{trs}{term rewriting system}
+\newabbreviation{TTH}{tth}{typed \glsxtrlong{TH}}
+\newabbreviation{TVOC}{tvoc}{total volatile organic compounds}
+\newabbreviation{UI}{ui}{user interface}
+\newabbreviation{UOD}{uod}{universe of discourse}
+\newabbreviation{UOG}{uog}{University of Glasgow}
+\newabbreviation{VM}{vm}{virtual machine}
 
 % Glossaries
 \newglossaryentry{ABC}{%
        name=ABC,
-       description={\gls{CLEAN}'s intermediate graph-rewriting language},
+       description={\gls{CLEAN}'s intermediate graph-rewriting language},
 }
 \newglossaryentry{MTASK}{%
        name=mTask,
-       description={a \glsxtrshort{TOP} \glsxtrshort{EDSL} for edge devices integrated with the \gls{ITASK} system},
+       description={a \glsxtrshort{TOP} \glsxtrshort{EDSL} for edge devices integrated with the \gls{ITASK} system},
 }
 \newglossaryentry{ITASK}{%
        name=iTask,
-       description={a \glsxtrshort{TOP} \glsxtrshort{EDSL} for creating distributed multi-user collaborative web applications},
+       description={a \glsxtrshort{TOP} \glsxtrshort{EDSL} for creating distributed multi-user collaborative web applications},
 }
 \newglossaryentry{TOPHAT}{%
        name=TopHat,
-       description={- a \glsxtrshort{TOP} language designed to formally capture the essence of \gls{TOP}}
-}
-\newglossaryentry{CLEAN}{%
-       name=Clean,
-       description={- Clean \glsxtrlong{LEAN}, a pure lazy \glsxtrlong{FP} language based on graph rewriting}
+       description={a \glsxtrshort{TOP} language designed to formally capture the essence of \gls{TOP}}
 }
 \newglossaryentry{HASKELL}{%
        name=Haskell,
-       description={a pure lazy \glsxtrlong{FP} language designed by a committe as a concept language}
+       description={a pure lazy \glsxtrlong{FP} language designed by a committe as a concept language}
 }
 \newglossaryentry{HASKELL98}{%
        name=Haskell98,
-       description={a standardised version of \gls{HASKELL}},
+       description={a standardised version of \gls{HASKELL}},
 }
 \newglossaryentry{ARDUINO}{%
        name=Arduino,
-       description={a widely used framework for programming microcontrollers}
+       description={a widely used framework for programming microcontrollers}
 }
 \newglossaryentry{MBED}{%
        name=mbed,
-       description={a widely used framework for programming microcontrollers designed for ARM cortex-M}
+       description={a widely used framework for programming microcontrollers designed for ARM cortex-M}
 }
 \newglossaryentry{CPP}{
        name=C\texttt{++},
-       description={a general-purpose imperative programming language based on \gls{C}}
+       description={a general-purpose imperative programming language based on \gls{C}}
 }
 \newglossaryentry{C}{
        name=C,
-       description={- a general-purpose imperative programming}
-}
-\newglossaryentry{I2C}{
-       name=I\textsuperscript{2}C,
-       description={(Inter-Integrated Circuit) {-} a simple serial communication protocol often used to connect sensors to microcontrollers}
+       description={a general-purpose imperative programming}
 }
 \newglossaryentry{WIFI}{
        name=Wi-Fi,
-       description={- is a family of wireless network protocols commonly used for local area networking}
-}
-\newglossaryentry{SPI}{
-       name=SPI,
-       description={(Serial Peripheral Interface) {-} a synchronous serial communication protocol often used to connect sensors to microcontrollers}
+       description={is a family of wireless network protocols commonly used for local area networking}
 }
 \newglossaryentry{TINYML}{
        name=TinyML,
-       description={a deep learning framework for microcontrollers}
+       description={a deep learning framework for microcontrollers}
 }
 \newglossaryentry{PYTHON}{
        name=Python,
-       description={a multi-paradigm interpreted programming language}
+       description={a multi-paradigm interpreted programming language}
 }
 \newglossaryentry{MICROPYTHON}{
        name=MicroPython,
-       description={a \gls{PYTHON} implementation tailored for microcontrollers}
+       description={a \gls{PYTHON} implementation tailored for microcontrollers}
 }
 \newglossaryentry{FREERTOS}{
        name=FreeRTOS,
-       description={an open-source \glsxtrshort{RTOS} for microcontrollers}
+       description={an open-source \glsxtrshort{RTOS} for microcontrollers}
 }
 \newglossaryentry{ONEWIRE}{
        name=1-wire,
-       description={- a simple single wire communication protocol often used to connect sensors to microcontrollers}
-}
-\newglossaryentry{JSON}{
-       name=JSON,
-       description={(JavaScript Object Notation) {-} a open data interchange format using human readable text}
-}
-\newglossaryentry{MQTT}{
-       name=MQTT,
-       description={(MQ Telemetry Transport) {-} a publish-subscribe network protocol designed for resource constrained devices}
+       description={a simple single wire communication protocol often used to connect sensors to microcontrollers}
 }
 \newglossaryentry{WEMOS}{
        name=WEMOS,
-       description={a popular ESP8266 microcontroller based prototyping platform supporting \gls{ARDUINO}.}
+       description={a popular ESP8266 microcontroller based prototyping platform supporting \gls{ARDUINO}.}
 }
index d5c0c85..bba16d1 100644 (file)
@@ -1,6 +1,3 @@
-\usepackage[dutch,russian,british]{babel}
-%\babelfont[russian]{rm}{Liberation Serif}
-
 \hyphenation{
        Has-kell
        qua-si-quo-ter
index a6b54c3..cdad127 100644 (file)
@@ -25,7 +25,7 @@
        showtabs=false,
        stringstyle=\it,
        tabsize=4,
-       upquote=true,
+%      upquote=true,
        numberstyle=\tiny,
 }
 \usepackage{preamble/lstlangclean}
index 105589c..c8da318 100644 (file)
@@ -1,11 +1,6 @@
-\usepackage{lmodern}        % Nicer font
-\usepackage{microtype}      % Better kerning
-\usepackage{tipa}           % IPA symbols
 \usepackage{stmaryrd}       % short arrows
-\usepackage{textcomp}       % upquote
+%\usepackage{textcomp}       % upquote
 \usepackage{titlecaps}      % titlecase commands
-\usepackage{amsmath}        % extra math
-\usepackage{amssymb}        % extra math symbols
 \usepackage{wasysym}        % circle symbols
 \usepackage{relsize}        % \smaller command
 \usepackage{xcolor}         % colors
@@ -18,4 +13,5 @@
 
 \everymath{\it\/}
 
-\DeclareMathSymbol{\shortminus}{\mathbin}{AMSa}{"39} %chktex 18
+%\DeclareMathSymbol{\shortminus}{\mathbin}{AMSa}{"39} %chktex 18
+\newcommand{\shortminus}{-}
index ea278e1..071a5a6 100644 (file)
 
 % Glossary
 \printglossary[style=mcolindex]%
-\printglossary[type=\acronymtype,style=mcolindex]%
 
 %% Lists of
 %\cleardoublepage{}