%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Thanks for your awesome work on the bot, guys! You rock <3
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Package options.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Functionality is the same as adding the options using `[]` before the package
% name, but this way ensures that there are no option clashes if a package is
% loaded more than once.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\PassOptionsToPackage{ LGR, T1 }{fontenc}
\PassOptionsToPackage{ utf8 }{inputenc}

\PassOptionsToPackage{ a4paper, vscale = 0.8 }{geometry}
\PassOptionsToPackage{ indent }{parskip}

\PassOptionsToPackage{ lighttt }{lmodern}
\PassOptionsToPackage{ light, scaled = 0.95, condensed }{noto-mono}
\PassOptionsToPackage{ sfdefault, light, scaled = 0.95 }{FiraSans}

\PassOptionsToPackage{ Symbolsmallscale }{upgreek}

\PassOptionsToPackage{ ISO }{diffcoeff}
\PassOptionsToPackage{ abbreviations = false, binary-units }{siunitx}
\PassOptionsToPackage{ version = 4 }{mhchem}

\PassOptionsToPackage{ x11names, table }{xcolor}

\PassOptionsToPackage{ Export }{adjustbox}
\PassOptionsToPackage{ explicit }{titlesec}
\PassOptionsToPackage{ autostyle }{csquotes}
\PassOptionsToPackage{ normalem }{ulem}
\PassOptionsToPackage{ symbol*, stable, multiple }{footmisc}

\PassOptionsToPackage{ style = numeric-comp }{biblatex}
\PassOptionsToPackage{ fit }{truncate}
\PassOptionsToPackage{ nomarkers, nolists }{endfloat}

\PassOptionsToPackage{ french, english }{babel}
\PassOptionsToPackage{ colorlinks }{hyperref}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Ways to modify and add commands.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{ letltxmacro }
\usepackage{ etoolbox }
\usepackage{ expl3 }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Clone a command.
\newcommand*{\Let}{\LetLtxMacro}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Clone an environment.
\newcommand{\cloneEnv}[2]{% #1 is cloned into #2
\csletcs{#2}{#1}%
\csletcs{end#2}{end#1}%
}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Input and output specification.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{ fontenc }
\usepackage{ inputenc }
\usepackage{ CJKutf8 }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Add CJ support by default.
%% Doesn't work with `endfloat`…
% \AtBeginDocument{\begin{CJK}{UTF8}{gkai}}
% \AtEndDocument{\clearpage\end{CJK}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Page layout and font modifications.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{ geometry }
\usepackage{ parskip }
% \usepackage{ indentfirst }
\usepackage{ setspace }
\usepackage{ multicol }
\usepackage{ scrextend }
\usepackage{ anyfontsize }

%% Ignore all `\par` tokens until next letters, like `\ignorespaces`
\makeatletter
\long\def\eat#1{\ignorepars}
\def\ignorepars{\futurelet\next\@ignorepars}
\def\@ignorepars{\ifx\next\par\expandafter\eat\fi}
\makeatother

%% Make `parskip` and `parindent` adapt to the font size.
\makeatletter
\def\@parindent{ 1.5em }
\def\@parskip{ 0.6em plus 0.2em }
\def\resetParSpacing{\parindent\@parindent\parskip\@parskip}
\makeatother

%% New command to resize all text.
\newcommand*{\size}[1]{\KOMAoptions{ fontsize = #1 }\resetParSpacing}

%% Re-enable `\parindent`s and `\parskip`s
\patchcmd{\preview}
{\ignorespaces} %%% \preview ends with \ignorespaces
{\resetParSpacing\ignorespaces}
{}
{}

%% \providelength, like \providecommand
\ExplSyntaxOn
\NewDocumentCommand{\providelength}{m}
 {
  \cs_if_exist:NTF #1
   {
    \sdaau_providelength_check:N #1
   }
   {
    \msg_info:nnx { providelength } { making } { \token_to_str:N #1 }
    \newlength{#1}
   }
 }
\cs_new_protected:Nn \sdaau_providelength_check:N
 {
  \token_if_skip_register:NTF #1
   {
    \msg_info:nnx { providelength } { not-making } { \token_to_str:N #1 }
   }
   {
    \msg_error:nnx { providelength } { defined } { \token_to_str:N #1 }
   }
 }
\msg_new:nnn { providelength } { making }
 {
  \token_to_str:N \providelength :~making~new~length~#1
 }
\msg_new:nnn { providelength } { not-making }
 {
  \token_to_str:N \providelength :~#1~is~already~a~length
 }
\msg_new:nnnn { providelength } { defined }
 {
  #1~illegal~in~\token_to_str:N\providelength
 }
 {
  #1~is~defined,~but~not~with~\token_to_str:N\newlength
 }
\ExplSyntaxOff

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Glyph sets.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Text glyphs.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{ lmodern }
\usepackage{ textgreek }
\usepackage{ noto-mono }
\usepackage{ FiraSans }
\input{ArtNouv.fd}
\input{GotIn.fd}
\input{GoudyIn.fd}
\input{Rothdn.fd}
\input{RoyalIn.fd}
\usepackage{ pifont }
\usepackage{ adforn }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Fira Sans changes and fixes.
\makeatletter
\renewcommand*{\oldstylenums}[1]{{\firaoldstyle #1}}
\renewcommand*{\upshape}{%
\not@math@alphabet\upshape\relax%
\fontshape\updefault\selectfont%
}
\makeatother

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Add initials switches.
\makeatletter
\newcommand*{\@initfamily}{GoudyIn}
\newcommand*{\setInit}[1]{\renewcommand*{\@initfamily}{#1}}
\newcommand*{\initfamily}{\usefont{U}{\@initfamily}{xl}{n}}
%\DeclareTextFontCommand{\textinit}{\initfamily}
\newcommand{\textinit}[1]{{\initfamily\MakeUppercase{#1}}}
\makeatother

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Math glyphs.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{ mathtools }% Here because it needs to be loaded before `fdsymbol`
\usepackage{ upgreek }
\usepackage{ fdsymbol }% Loads eufrak automatically
\usepackage{ mathrsfs }
\DeclareSymbolFont{bbold}{U}{bbold}{m}{n}
\DeclareSymbolFontAlphabet{\mathbb}{bbold}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Utility macros.
\newcommand{\AddG}[2]{\DeclareMathSymbol{#1}{\mathalpha}{operators}{`#2}}
\newcommand{\Addg}[2]{\DeclareMathSymbol{#1}{\mathord}{bbold}{"#2}}
\makeatletter
\@onlypreamble\AddG
\@onlypreamble\Addg
\makeatother

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Add missing Greek uppercase letters.
\AddG{\Alpha}{A}
\AddG{\Beta}{B}
\AddG{\Epsilon}{E}
\AddG{\Zeta}{Z}
\AddG{\Eta}{H}
\AddG{\Iota}{I}
\AddG{\Kappa}{K}
\AddG{\Mu}{M}
\AddG{\Nu}{N}
\AddG{\Omikron}{O}
\AddG{\Rho}{P}
\AddG{\Tau}{T}
\AddG{\Upsilon}{Y}
\AddG{\Chi}{X}
\DeclareMathSymbol{\omikron}{\mathord}{letters}{`o}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Manually add blackboard glyphs.
\Addg{\bbalpha}{0B}
\Addg{\bbbeta}{0C}
\Addg{\bbgamma}{0D}
\Addg{\bbdelta}{0E}
\Addg{\bbepsilon}{0F}
\Addg{\bbzeta}{10}
\Addg{\bbeta}{11}
\Addg{\bbtheta}{12}
\Addg{\bbiota}{13}
\Addg{\bbkappa}{14}
\Addg{\bblambda}{15}
\Addg{\bbmu}{16}
\Addg{\bbnu}{17}
\Addg{\bbxi}{18}
\Addg{\bbomikron}{6F}
\Addg{\bbpi}{19}
\Addg{\bbrho}{1A}
\Addg{\bbsigma}{1B}
\Addg{\bbtau}{1C}
\Addg{\bbupsilon}{1D}
\Addg{\bbphi}{1E}
\Addg{\bbchi}{1F}
\Addg{\bbpsi}{20}
\Addg{\bbomega}{7F}
% Add \textomikron and \upomikron!

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Shorthands and aliases for characters.
\AtEndPreamble{%
\Let\caret\textasciicircum%
\Let\tilde\textasciitilde%
}
\Let\dividedby\div
\Let\reference\textreferencemark
\newcommand{\bSlash}{\ifmmode\backslash\else\textbackslash\fi}
% Others to be added/redefined.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Restore macros overwritten by amsmath.
\makeatletter
\def\setcounter#1#2{\@ifundefined{c@#1}{\@nocounterr{#1}}%
   {\calc@assign@count{\global\csname c@#1\endcsname}{#2}}}
  \def\addtocounter#1#2{\@ifundefined{c@#1}{\@nocounterr{#1}}%
    {\calc@assign@count{\global\advance\csname c@#1\endcsname}{#2}}}%
  \def\stepcounter#1{\@ifundefined {c@#1}%
    {\@nocounterr {#1}}%
    {\global\advance\csname c@#1\endcsname \@ne
    \begingroup
      \Let\@elt\@stpelt \csname cl@#1\endcsname
    \endgroup}}%
\@ifpackageloaded{amstext}{%
 \expandafter\def\expandafter\stepcounter
    \expandafter#\expandafter1\expandafter{%
    \expandafter\iffirstchoice@\stepcounter{#1}\fi
 }
 \expandafter\def\expandafter\addtocounter
    \expandafter#\expandafter1\expandafter#\expandafter2\expandafter{%
    \expandafter\iffirstchoice@\addtocounter{#1}{#2}\fi
 }
}{}
\makeatother

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Substitutions to suppress warnings.


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Global math modifications and improvements.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{ mleftright }
\usepackage{ IEEEtrantools }

%% Disable `$` for math.
\AfterEndPreamble{\catcode`\$ = 12}

%% Beautiful math everywhere.
\everymath{ \displaystyle }
%% Fix \left ... \right spacings
\mleftright
%% Enable `\(short)intertext` globally
\makeatletter\intertext@\makeatother

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Make super/subscripts better.
\makeatletter
\newcommand{\SP}[1]{\ifmmode\sp{ \fam=-1 #1 }\else\textsuperscript{#1}\fi}
\newcommand{\SB}[1]{\ifmmode\sb{ \fam=-1 #1 }\else\textsubscript{#1}\fi}
\newcommand{\itSP}[1]{\ifmmode\sp{ \fam=-1 \mathit{ #1 } }\else\textsuperscript{\textit{#1}}\fi}
\newcommand{\itSB}[1]{\ifmmode\sb{ \fam=-1 \mathit{ #1 } }\else\textsubscript{\textit{#1}}\fi}
\makeatother
\Let\Sup\sup\Let\sup\relax
\Let\Sub\sub\Let\sub\relax
\newcommand{\sup}[1]{\ifmmode\SP{ \text{#1} }\else\SP{\( #1 \)}\fi}
\newcommand{\sub}[1]{\ifmmode\SB{ \text{#1} }\else\SB{\( #1 \)}\fi}
\AfterEndPreamble{%
%% Redefine `^` and `_` to use the definitions of `\SP` and `\SB`.
\catcode`\^ = \active
\catcode`\_ = \active
\begingroup\lccode`\~ = `\^
\lowercase{\endgroup\Let~}\SP
\begingroup\lccode`\~ = `\_
\lowercase{\endgroup\Let~}\SB
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Shorthands for commonly-used stuff.
%%%%%%%%%%%%%%%%%%%%
%% Intertext.
\Let\longintertext\intertext
\Let\intertext\shortintertext% because `\shortintertext' is too long :(
%%%%%%%%%%%%%%%%%%%%
%% Overlaps.
\Let\Llap\mathllap
\Let\Clap\mathclap
\Let\Rlap\mathrlap
%%%%%%%%%%%%%%%%%%%%
%% Substacks.
\newcommand{\Lstack}[1]{\begin{subarray}{l} #1 \end{subarray}}
\newcommand{\Cstack}[1]{\begin{subarray}{c} #1 \end{subarray}}
\newcommand{\Rstack}[1]{\begin{subarray}{r} #1 \end{subarray}}
%%%%%%%%%%%%%%%%%%%%
%% IEEEeqnarrays.
\cloneEnv{IEEEeqnarray}{eqn}
\cloneEnv{IEEEeqnarray*}{eqn*}
\cloneEnv{IEEEeqnarraybox}{eqnbox}
\cloneEnv{IEEEeqnarraybox*}{eqnbox*}
\Let\yNumber\IEEEyesnumber
\Let\nNumber\IEEEnonumber
%%%%%%%%%%%%%%%%%%%%
%% Cases.
%%% Based around IEEEeqnarraybox*
\newenvironment{@eqnbox}[1]{%
\begin{eqnbox*}[%
  \IEEEeqnarraystrutmode\IEEEeqnarraystrutsizeadd{1pt}{1pt}%
][ c ]{#1}%
}{%
\end{eqnbox*}%
}
%
\makeatletter%
\renewenvironment{cases}[2][]{%
\if #2l%
  \def\l@delim{\{}\def\r@delim{.}%
  \def\@one{ l }%
\else\if #2r%
  \def\l@delim{.}\def\r@delim{\}}%
  \def\@one{ r }%
\else%
  \def\l@delim{\{}\def\r@delim{\}}%
  \def\@one{ c }%
\fi\fi%
\ifblank{#1}{}{\def\@one{#1}}%
%
\left\l@delim \begin{@eqnbox}{\@one}%
}{%
\end{@eqnbox} \right\r@delim%
}
\makeatother

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Make brackets behave better.
\makeatletter
\def\@BracContents{}% Globally define the bracket contents to be none
\newcommand{\@BracKern}{\kern-\nulldelimiterspace}% Removes additional whitespace
%
%%%%%%%%%%%%%%%%%%%%
%% Main command.
\newcommand{\Brac}[3]{% #1,#3 = left/right bracket type
\begingroup%
\def\@BracContents{#2}
\mathopen{ \left#1 \vphantom{#2} \@BracKern \right. }% left bracket
#2% content
\mathclose{ \left. \@BracKern \vphantom{#2} \right#3 }% right bracket
\endgroup%
}
%%%%%%%%%%%%%%%%%%%%
%% \middle anywhere!
\Let\old@middle\middle
\renewcommand{\middle}[1]{%
\nonscript\;%
\ifnum\currentgrouptype = 16%
  \old@middle#1%
\else%
  \@middle#1%
\fi%
\nonscript\;%
}
\newcommand{\@middle}[1]{%
{%
\Let\middle\@empty% neutralize \middle inside \@Braccontents
\left.\@BracKern% fake \left
\vphantom{\@BracContents}% set size
\old@middle#1% thing to typeset
\right.\@BracKern% fake \right
}%
}
\makeatother

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Boxed expression anywhere.
%% To be completed so that it can be used in IEEEeqnarray
\newcommand{\boxeq}[1]{%
\begingroup%
\setlength{\fboxsep}{ 0.3em }%
\boxed{ #1 }%
\endgroup
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Skip between groups of equations.
\newcommand{\Skip}{\\[ 4\jot ]}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Additional math macros and symbols.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Brackets and other extensible symbols.
\newcommand{\BracR}[1]{\Brac({ #1 })}
\newcommand{\BracS}[1]{\Brac[{ #1 }]}
\newcommand{\BracC}[1]{\Brac\{{ #1 }\}}
\newcommand{\BracA}[1]{\Brac\langle{ #1 }\rangle}
\newcommand{\mean}[1]{\BracA{ #1 }}
\newcommand{\abs}[1]{\Brac\lvert{ #1 }\rvert}
\newcommand{\norm}[2][]{%
\ifblank{#1}{\Brac\lVert{ #2 }\rVert}{\norm{ #2 }_{ #1 }}%
}
\newcommand{\floor}[1]{\Brac\lfloor{ #1 }\rfloor}
\newcommand{\ceil}[1]{\Brac\lceil{ #1 }\rceil}
\newcommand{\pair}[2]{\BracR{ #1, #2 }}
\newcommand{\inner}[2]{\BracA{ #1, #2 }}
\newcommand{\bra}[1]{\Brac\langle{ #1 }\rvert}
\newcommand{\ket}[1]{\Brac\lvert{ #1 }\rangle}
\newcommand{\braket}[2]{\Abrac{ #1 \bravert #2 }}
\newcommand{\ketbra}[2]{\ket{ #1 }\bra{ #2 }}
\newcommand{\braopket}[3]{\Abrac{ #1 \bravert #2 \bravert #3 }}
\newcommand{\expect}[1]{\Abrac{ #1 }}
%
\makeatletter
\def\oSbrac@star#1#2{\mathord{ \overbracket{ #1 }\SP{ \Clap{ #2 } } }}
\def\oSbrac@nostar#1#2{\oSbrac@star{#1}{\text{#2}}}
\def\oSbrac{\@ifstar\oSbrac@star\oSbrac@nostar}
%
\def\uSbrac@star#1#2{\mathord{ \underbracket{ #1 }\SB{ \Clap{ #2 } } }}
\def\uSbrac@nostar#1#2{\uSbrac@star{#1}{\text{#2}}}
\def\uSbrac{\@ifstar\uSbrac@star\uSbrac@nostar}
%
\def\oBracC@star#1#2{\mathord{ \overbrace{ #1 }\SP{ \Clap{ #2 } } }}
\def\oBracC@nostar#1#2{\oBracC@star{#1}{\text{#2}}}
\def\oBracC{\@ifstar\oBracC@star\oBracC@nostar}
%
\def\uBracC@star#1#2{\mathord{ \underbrace{ #1 }\SB{ \Clap{ #2 } } }}
\def\uBracC@nostar#1#2{\uBracC@star{#1}{\text{#2}}}
\def\uBracC{\@ifstar\uBracC@star\uBracC@nostar}
\makeatother
%
\makeatletter
\def\eval@[#1][#2]#3{%
\Brac.{ #3 }\rvert_{ #1 }^{ #2 }%
}
\def\@eval[#1]{\@ifnextchar[%
{\eval@[#1]}%
{\eval@[#1][\relax]}%
}
\def\eval{\@ifnextchar[%
{\@eval}%
{\@eval[\relax]}%
}
\makeatother
%
\newcommand{\set}[2]{\BracC{ #1 \suchthat #2 }}
%
\newcommand{\ccI}[2]{\Brac[{ #1 \upto #2 }]}
\newcommand{\coI}[2]{\Brac[{ #1 \upto #2 }[}
\newcommand{\ocI}[2]{\Brac]{ #1 \upto #2 }]}
\newcommand{\ooI}[2]{\Brac]{ #1 \upto #2 }[}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Name aliases for easier writing.
%%%%%%%%%%%%%%%%%%%%
%% Relations.
\newcommand{\defeq}{\mathrel{ \coloneq }}
%
\newcommand{\suchthat}{\mathclose{}\mathord{ \middle\vert }\mathopen{}}
\Let\given\suchthat
\Let\bravert\suchthat
%
\newcommand{\upto}{\mathrel{ \colon }}
\newcommand{\appliedto}{\mathrel{ \colon }}
%
\makeatletter
\Let\old@forall\forall
\Let\old@exists\exists
\renewcommand{\forall}{\old@forall\,}
\renewcommand{\exists}{\old@exists\,}
\newcommand{\uexists}{\old@exists!\,}
%%%%%%%%%%%%%%%%%%%%
%% Binary operators.
\Let\xtimes\times
\renewcommand{\times}{\mathbin{ \cdot }}
%%%%%%%%%%%%%%%%%%%%
%% General aliases.
\newcommand{\function}[3]{ #1 \appliedto #2 \mapsto #3 }
\newcommand{\Set}[1]{\mathcal{ #1 }}
%%%%%%%%%%%%%%%%%%%%
%% Symbols.
%%%%%%%%%%
%%% Calc.
\DeclareMathSymbol{\diffSymb}{\mathord}{operators}{`d}
%%%%%%%%%%
%%% Sets.
\newcommand{\Real}{\mathbb{ R }}
\newcommand{\inter}{\mathrel{ \cap }}
\newcommand{\union}{\mathrel{ \cup }}
%
\newcommand{\compl}[1]{\mathord{ #1^{ \complement } }}
\newcommand{\conjug}[1]{\mathord{ #1^* }}
%
\newcommand{\distance}[2]{d\BracR{ #1, #2 }}
%%%%%%%%%%
%%% Stats.
\DeclareMathSymbol{\var}{\mathord}{letters}{`x}
\DeclareMathSymbol{\Rvar}{\mathord}{letters}{`X}
\DeclareMathSymbol{\stdRvar}{\mathord}{letters}{`Z}
%
\DeclareMathSymbol{\NdistSymb}{\mathord}{letters}{`N}
\newcommand{\Ndist}[2]{\operatorname{ \NdistSymb } \pair{ #1 }{ #2 }}
\newcommand{\Mean}{\mathord{ \mu }}
\DeclareMathSymbol{\expval}{\mathord}{letters}{`E}
\newcommand{\SD}{\mathord{ \sigma }}
\newcommand{\variance}{\SD\SP{ 2 }}
\DeclareMathOperator{\Var}{Var}
\DeclareMathSymbol{\dom}{\mathord}{letters}{`D}
%
\DeclareMathSymbol{\probSymb}{\mathord}{operators}{`p}
\newcommand{\Prob}[1]{\operatorname{ \probSymb } \BracR{ #1 }}
\newcommand{\stdProb}[1]{\operatorname{ \Phi } \BracR{ #1 }}
\newcommand{\EV}[1]{\operatorname{ \expval } \BracS{ #1 }}
\newcommand{\Variance}[1]{\Var \BracR{ #1 }}
\newcommand{\Domain}[1]{\dom\SB{ #1 }}
%%%%%%%%%%
%%% PHYS.
\DeclareMathSymbol{\Fermi}{\mathord}{operators}{`F}
%%%%%%%%%%
%%% Misc.
\newcommand{\placeholder}{\mathord{ \cdot }}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Formal notation.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{ fp }
\usepackage{ xfrac }
\usepackage{ diffcoeff }
\usepackage{ esvect }
\usepackage{ siunitx }
\usepackage{ mhchem }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Make `\sfrac` look nice.
\makeatletter
\DeclareInstance{xfrac}{\fira@family}{text}{
  denominator-bot-sep = 0.02em,
  slash-right-kern = -0.05em,
  slash-left-kern = -0.05em
}
\DeclareInstance{xfrac}{mathdefault}{math}{
  numerator-top-sep = 0.2ex,
  slash-right-mkern = -2mu
}
\makeatother
% Alias for `\sfrac' because I suck
\Let\xfrac\sfrac

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% `diffcoeff` setup and modifications.
%% We need to change each one since they don't inherit from one another :(
\diffdef{}{
  op-symbol = \diffSymb,
  op-order-sep = 0mu,
  subscr-nudge = 0mu,
  long-var-wrap = (dv),
  /-left-delim = \left.,
  /-right-delim = \right\rvert
}
\diffdef{p}{
  subscr-nudge = 0mu,
  long-var-wrap = (dv),
  /-left-delim = \left(,
  /-right-delim = \right)
}
\diffdef{D}{
  subscr-nudge = 0mu,
  long-var-wrap = (dv),
  /-left-delim = \left.,
  /-right-delim = \right\rvert
}
\diffdef{delta}{
  subscr-nudge = 0mu,
  long-var-wrap = (dv),
  /-left-delim = \left.,
  /-right-delim = \right\rvert
}
\diffdef{Delta}{
  op-order-sep = -2mu,
  subscr-nudge = 0mu,
  long-var-wrap = (dv),
  /-left-delim = \left.,
  /-right-delim = \right\rvert
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% `esvect` is best.
\makeatletter
\def\vec@nostar#1{\vv{#1}}
\def\vec@star#1{\boldsymbol{#1}}
\def\vec{\@ifstar\vec@star\vec@nostar}
\makeatother

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% `siunitx` declarations.
%% Same behavior as `\ce` from `mhchem`.
\sisetup{
  detect-none, % I give up on trying to make text mode work
  math-micro = \upmu,
  separate-uncertainty, % \pm instead of parentheses for confidence intervals
  quotient-mode = fraction,
  range-phrase = { -- },
  % fraction-function = \frac,
}
% siunitx does the family detection at end of preamble, we counteract that.
\AfterEndPreamble{\sisetup{ math-rm = \mathrm }}
%% Unit specifications.
%\DeclareSIUnit{\molar}{\mole\per\deci\metre\cubed}
\DeclareSIUnit{\molar}{M}
\DeclareSIUnit{\litre}{L}
\DeclareSIUnit{\liter}{l}
\DeclareSIUnit{\octet}{o}
\DeclareSIUnit{\base}{b}
\DeclareSIUnit{\basepair}{bp}
\DeclareSIUnit{\rpm}{rpm}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Drawings and diagrams.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{ xcolor }
\usepackage{ graphicx }
\usepackage{ tikz }
\usepackage{ chemfig }
\usepackage{ pgfplotstable }
\usepackage{ pgfplots }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% `tikz` preparation.
\usetikzlibrary{
  babel,
  calc,
  positioning,
  arrows.meta,
  decorations.markings,
  patterns.meta,
  bending
}
%% Make the `calc` library usable (doesn't work unless `$` is of catcode 3).
\makeatletter
\pretocmd{\tikz@startup@env}{\catcode`\$ = 3}{}{}
\makeatother
%% Other global modifications.
\tikzset{
  align = center,
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Settings for `chemfig`.
\setchemfig{
  atom sep = 4em,
  angle increment = 30,
  scheme debug = true
}
\setcharge{ debug = true }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Settings for `pgfplots`.
\pgfplotsset{
  compat = 1.17,
  width = \linewidth,
  xlabel = \( x \),
  ylabel = \( y \),
  no markers,
  /tikz/every mark/.style = {
    thin,
    opacity = 1,
    scale = 0.2ex,
  },
  grid = major,
  clip = false,
  legend style = {
    font = \tiny,
    opacity = 0.5,
    text opacity = 1,
  },
  colormap name = viridis,
  3D/.style = {
    zlabel = \( z \),
    shader = faceted interp,
    z buffer = sort,
    3d box,
    every axis plot/.style = {
      surf,
      opacity = 0.7,
    },
  },
  2D/.style = {
    axis lines = middle,
    every axis plot/.style = {
      smooth,
      very thick,
      opacity = 0.7,
    },
  },
}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Typesetting.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Tables.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{ array }
\usepackage{ booktabs }
\usepackage{ makecell }
\usepackage{ multirow }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Shortcuts.
%%%%%%%%%%%%%%%%%%%%
%% Macros.
\Let\mCol\multicolumn
\Let\mRow\multirow
%%%%%%%%%%%%%%%%%%%%
% Column types.
\newcolumntype{L}[1]{>{\flushleft\arraybackslash}p{#1}<{\endflushleft}}
\newcolumntype{R}[1]{>{\flushright\arraybackslash}p{#1}<{\endflushright}}
\newcolumntype{B}[1]{>{\bfseries}#1}
\newcolumntype{T}[1]{>{\ttfamily}#1}
\newcolumntype{Q}[1]{S[
  table-number-alignment = right,
  table-figures-decimal = 0,
  table-figures-integer = 4,
  #1
]}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Fillers.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{ mwe }% Loads lipsum, blindtext and graphicx

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Extensions to basic LaTeX typesetting.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{ pbox }
\usepackage{ adjustbox }
\usepackage{ rotating }
\usepackage{ stackengine }
\usepackage{ titlesec }
\usepackage{ csquotes }
\usepackage{ enumitem }
\usepackage{ marginnote }
\usepackage{ wrapfig }
\usepackage{ ulem }
\usepackage{ cancel }
\usepackage{ subcaption }
\usepackage{ footmisc }
\usepackage{ url }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Useful for showing bounding boxes.
\setlength{\fboxsep}{ 0pt }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Make titles prettier.
\titleformat{\section}{\normalfont\Large\bfseries}{}{ 0pt }{#1}
\counterwithin{section}{part}% sections are lower than parts in the hierarchy
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Add the \parttitle hook.
\makeatletter
\pretocmd{\@part}{\gdef\parttitle{#1}}{}{}
\pretocmd{\@spart}{\gdef\parttitle{#1}}{}{}
\makeatother

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% `enumitem` settings.
\setlist[itemize]{
  label = {\( \bullet \)}
}
\setlist[description]{
  style = nextline,
%  labelwidth = 0pt,
%  labelsep = \leftmargin,
}
%% Allows the usage of itemjoin for some display lists
\Let\sentenceitemjoin\empty
\edef\sentenceitem{\noexpand\sentenceitemjoin\unexpanded\expandafter{\item}}%
\newcommand*\sentencelistprep{%
  \def\sentenceitemjoin{\def\sentenceitemjoin{\unskip\csuse{enit@itemjoin}}}%
  \Let\item\sentenceitem
}
%
\SetEnumitemKey{sentence}{
  first*={\sentencelistprep},
  after*={\unskip.},
  itemjoin={;},
}
%% Special `enumitem` page layout (to take less space)
\SetEnumitemKey{rCol}{ before* = {\raggedcolumns} }
\SetEnumitemKey{fCol}{ before* = {\flushcolumns} }
%
\SetEnumitemKey{1Col}{
  before* = {},
  after* = {},
}
\SetEnumitemKey{2Col}{
  before* = \begin{multicols}{2},
  after* = \end{multicols},
}
\SetEnumitemKey{3Col}{
  before* = \begin{multicols}{3},
  after* = \end{multicols},
}
\SetEnumitemKey{4Col}{
  before* = \begin{multicols}{4},
  after* = \end{multicols},
}
\SetEnumitemKey{5Col}{
  before* = \begin{multicols}{5},
  after* = \end{multicols},
}
\SetEnumitemKey{6Col}{
  before* = \begin{multicols}{6},
  after* = \end{multicols},
}
\SetEnumitemKey{7Col}{
  before* = \begin{multicols}{7},
  after* = \end{multicols},
}
%% Different labels for different types of enumeration
\SetEnumitemKey{and}{
  sentence,
  before = {\unskip:},
  itemjoin = {;},
}
\SetEnumitemKey{or}{
  sentence,
  before = {\unskip: either },
  itemjoin = {, or}
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% For `\marginnotes`.
\renewcommand{\marginfont}{\footnotesize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Better `\maketitle` setup.
%% More stuff to typeset!
\makeatletter
\newcommand{\@Subtitle}{}
\newcommand{\@titleExtra}{}
%
\newcommand{\Subtitle}[1]{\renewcommand{\@Subtitle}{#1}}
\newcommand{\titleExtra}[1]{\renewcommand{\@titleExtra}{#1}}
\makeatother

\makeatletter
\def\@maketitle{%
\begingroup%
\size{ 1.2em }\scshape%
\newpage%
\null%
\vskip 2em%
\begin{center}%
  \Let \footnote \thanks
  {\LARGE\bfseries \@title \par}%
  {\ifblank{\@Subtitle}{}%
  {\Large \@Subtitle \par}}%
  \vskip 1.5em%
  {%
    \normalsize%
    \lineskip .5em%
    \begin{tabular}[t]{c}%
      \@author%
    \end{tabular}\par%
  }%
  \vskip 1em%
  {\normalsize \@date}%
  {\ifblank{\@titleExtra}{}%
  {\\\footnotesize \@titleExtra}}%
\end{center}%
\par
\vskip 1.5em%
\endgroup%
}
\makeatother

%% Add starred version for `\emph`.
\makeatletter
\Let\old@emph\emph
\renewcommand{\emph}{\@ifstar\textbf\old@emph}
\makeatother

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Footnotes.
\DefineFNsymbols{link-d}{%
  {\reference}{\dagger}{\ddagger}{\S}{\P}{\#}{\|}%
  {\reference\reference}{\dagger\dagger}{\ddagger\ddagger}{\S\S}{\P\P}{\#\#}%
  {\reference\reference\reference}{\dagger\dagger\dagger}{\ddagger\ddagger\ddagger}{\S\S\S}{\P\P\P}{\#\#\#}%
}
\setfnsymbol{link-d}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Additional functionalities.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{ translations }
\usepackage{ biblatex }
\usepackage{ lettrine }
\usepackage{ truncate }
\usepackage{ pageslts }
\usepackage{ etoc }
\usepackage{ titleps }
\usepackage{ comment }
\usepackage{ float }
\usepackage{ endfloat }
\usepackage{ newfloat }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Custom translation of things.
\DeclareTranslationFallback{page-of-pages}{%
\thepage{} of \lastpageref{VeryLastPage}%
}
\DeclareTranslation{English}{page-of-pages}{%
\thepage{} of \lastpageref{VeryLastPage}%
}
\DeclareTranslation{French}{page-of-pages}{%
\thepage{} sur \lastpageref{VeryLastPage}%
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% `biblatex` setup.
\ExecuteBibliographyOptions{
  sorting = nyvt,
  autocite = superscript,
  language = auto,
  autolang = other,
  refsection = part,
}
\addbibresource{../Assets/LaTeX/references.bib}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% `lettrine` setup.
\renewcommand*{\LettrineFontHook}{\color{RoyalBlue4}\initfamily}
\setcounter{DefaultLines}{4}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% `pageslts` setup.
\pagenumbering{arabic}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Style for `etoc`.
%% Filler dots to make it look nice.
\newcommand*{\dotsPage}{%
\nobreak\leaders\hbox{\bfseries\hbox to .75ex {\hss.\hss}}%
\hfill\nobreak\makebox{\bfseries\etocpage}%
\par%
}
%% Nice TOC!
% \etocsetstyle{section}
% {\normalsize\rmfamily\bfseries\scshape%
% \begin{itemize}[ leftmargin = 0pt, label = {} ]}
% {\item}
% {\etocname\dotsPage}
% {\end{itemize}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% New hooks for titles in header.
\makeatletter
\newcommand{\@headTitleLeft}{}
\newcommand{\@headTitleRight}{}
\newcommand{\@headPart}{%
\providelength{\z}\settowidth{\z}{\thepart}%
\ifdimcomp{\z}{=}{0pt}{}{\partname~\thepart\quad\parttitle}%
\Let\z\relax%
}
\newcommand{\@headSection}{%
\providelength{\z}\settowidth{\z}{\thesection}
\ifdimcomp{\z}{=}{0pt}{}{\thesection\quad\sectiontitle}%
\Let\z\relax%
}
%
\newcommand{\headTitle}[2][]{%
\ifstrempty{#1}%
{\renewcommand{\@headTitleLeft}{#2}}%
{\renewcommand{\@headTitleLeft}{#1}}%
\renewcommand{\@headTitleRight}{#2}%
}
\newcommand{\headPart}[1]{%
\renewcommand{\@headPart}{#1}%
}
\newcommand{\headSection}[1]{%
\renewcommand{\@headSection}{#1}%
}
\makeatother

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Header and footer setup.
\makeatletter
\newpagestyle{fancy}[\scshape]{
\settitlemarks{
  part,
  section,
  subsection
}
%
\sethead
[\truncate{ 0.5\linewidth }{\@headTitleLeft}]
[]
[\truncate{ 0.5\linewidth }{\@headSection}]
{\truncate{ 0.5\linewidth }{\@headPart}}
{}
{\truncate{ 0.5\linewidth }{\@headTitleRight}}
%
\setfoot
{}
{\normalfont\adforn{18}~~{\itshape\GetTranslation{page-of-pages}}~~\adforn{46}}
{}
%
\renewcommand{\makeheadrule}{\raisebox{ -1em }{\parbox{\linewidth}{\hrulefill
\raisebox{ -0.25em }{\quad\adforn{21}~~\adforn{4}~~\adforn{49}\quad}
\hrulefill}}}
}

\newpagestyle{title}[\scshape]{
\settitlemarks{
  part,
  section,
  subsection
}
%
\sethead
{}
{}
{}
%
\setfoot
{}
{\normalfont\adforn{18}~~{\itshape\GetTranslation{page-of-pages}}~~\adforn{46}}
{}
}
\apptocmd{\maketitle}{\thispagestyle{title}}{}{}
\makeatother
\pagestyle{fancy}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% `endfloat` setup.
%% Add float environments.
\DeclareDelayedFloatFlavor{sidewaysfigure}{figure}
\DeclareDelayedFloatFlavor{sidewaystable}{table}
%% Change appearance.
\renewcommand{\efloatseparator}{\ignorepars}
\renewcommand{\efloatheading}[1]{%
\markboth%
{}%
{}%
}
%% Remove header titles.
\pretocmd{\processdelayedfloats}{\headPart{}\headSection{}}{}{}

%% Inline version of floats.
\makeatletter
\DeclareFloatingEnvironment[
  fileext = lot,
  placement = !htbp,
]{Table}
\DeclareFloatingEnvironment[
  fileext = lof,
  placement = !htbp,
]{Figure}
\makeatother


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Global changes and redefinitions.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{ babel }
\usepackage{ hyperref }

%% shorthand to change `babel` languages.
\Let\lang\selectlanguage

%% Fix a conflict between `hyperref` and `tikz`.
\def\HyperFirstAtBeginDocument#1{#1}

%% Shorthand for making hyperref work well.
\Let\TPS\texorpdfstring


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Changes that are specific to Discord.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\size{ 12pt }%

\definecolor{BG}{HTML}{FEFEFE}
\newcommand{\setBG}[1]{%
\definecolor{BG}{HTML}{#1}%
\pagecolor{BG}%
}

\newcommand{\fullW}{{%
\par\noindent\hspace{ -15pt }%
\color{BG}\rule{\paperwidth}{0.1pt}%
\par\vspace{ -1.05em }%
}}

\AfterEndPreamble{%
%\setBG{7deeda}%
\fullW%
}