%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% 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{ T1 }{fontenc} \PassOptionsToPackage{ utf8x, utf8 }{inputenc} \PassOptionsToPackage{ a4paper }{geometry} \PassOptionsToPackage{ indent }{parskip} \PassOptionsToPackage{ sfdefault, ultralight }{FiraSans} \PassOptionsToPackage{ ISO }{diffcoeff} \PassOptionsToPackage{ abbreviations = false }{siunitx} \PassOptionsToPackage{ version = 4 }{mhchem} \PassOptionsToPackage{ x11names, table }{xcolor} \PassOptionsToPackage{ autostyle }{csquotes} \PassOptionsToPackage{ normalem }{ulem} \PassOptionsToPackage{ english, french }{babel} \PassOptionsToPackage{ colorlinks }{hyperref} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Ways to modify and add commands. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage{ letltxmacro } \usepackage{ etoolbox } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 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}% } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Add content to an existing command. \newcommand{\prefixMacro}[2]{% #2 is command name, #1 is stuff to add \csletcs{old@#2}{#2}% \csdef{#2}{#1 \csuse{old@#2}}% } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Input and output specification. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage{ fontenc } \usepackage{ inputenc } \usepackage{ CJKutf8 } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Add CJ support by default. \AtBeginDocument{\begin{CJK}{UTF8}{gkai}} \AtEndDocument{\clearpage\end{CJK}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Page layout and font modifications. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage{ geometry } \usepackage{ parskip } \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} {}{} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Glyph sets. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Text glyphs. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage[ sfdefault, ultralight ]{ FiraSans } \input{ArtNouv.fd} \input{GotIn.fd} \input{GoudyIn.fd} \input{Rothdn.fd} \input{RoyalIn.fd} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 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*{\@infamily}{GoudyIn} \newcommand*{\setInit}[1]{\renewcommand*{\@infamily}{#1}} \newcommand*{\infamily}{\usefont{U}{\@infamily}{xl}{n}} \makeatother %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Changes to the \ttfamily. %%%%%%%%%%%%%%%%%%%% %% Bold = normal. \makeatletter \DeclareFontFamily{T1}{cmtt}{\hyphenchar \font\m@ne} \DeclareFontShape{T1}{cmtt}{m}{n}{ <-9> ectt0800 <9-10> ectt0900 <10-12> ectt1000 <12-17> ectt1200 <17-> ectt1728 }{} \DeclareFontShape{T1}{cmtt}{m}{it}{ <-9> ecit0800 <9-10> ecit0900 <10-12> ecit1000 <12-17> ecit1200 <17-> ecit1728 }{} \DeclareFontShape{T1}{cmtt}{m}{sl}{ <-9> ecst0800 <9-10> ecst0900 <10-12> ecst1000 <12-17> ecst1200 <17-> ecst1728 }{} \DeclareFontShape{T1}{cmtt}{m}{sc}{ <-9> ectc0800 <9-10> ectc0900 <10-12> ectc1000 <12-17> ectc1200 <17-> ectc1728 }{} \DeclareFontShape{T1}{cmtt}{bx}{n}{ <-> ssub * cmtt/m/n }{} \DeclareFontShape{T1}{cmtt}{bx}{it}{ <-> ssub * cmtt/m/it }{} \DeclareFontShape{T1}{cmtt}{bx}{sl}{ <-> ssub * cmtt/m/sl }{} \DeclareFontShape{T1}{cmtt}{bx}{sc}{ <-> ssub * cmtt/m/sc }{} %%%%%%%%%%%%%%%%%%%% %% Small caps. \Let\old@tt\ttfamily \renewcommand*{\ttfamily}{\old@tt\scshape} \makeatother %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Math glyphs. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage{ MnSymbol } \usepackage{ mathrsfs } \usepackage{ eufrak } \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{\Omicron}{O} \AddG{\Rho}{P} \AddG{\Tau}{T} \AddG{\Upsilon}{Y} \AddG{\Chi}{X} \DeclareMathSymbol{\omicron}{\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{\bbomicron}{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} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Global math modifications and improvements. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage{ mathtools } \usepackage{ mleftright } \usepackage{ IEEEtrantools } %% Beautiful math everywhere. \everymath{ \displaystyle } %% Fix \left ... \right spacings \mleftright %% Enable `\(short)intertext` globally \makeatletter\intertext@\makeatother %% Switch between tags on left and right sides \makeatletter \newcommand{\lTags}{\tagsleft@true} \newcommand{\rTags}{\tagsleft@false} \makeatother %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Make sub/superscripts better. \makeatletter \Let\old@sp\sp \Let\old@sb\sb \renewcommand{\sp}[1]{\ifmmode\old@sp{ \fam=-1 #1 }\else\textsuperscript{#1}\fi} \renewcommand{\sb}[1]{\ifmmode\old@sb{ \fam=-1 #1 }\else\textsubscript{#1}\fi} \makeatother %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Shorthands for commonly-used stuff. %%%%%%%%%%%%%%%%%%%% %% 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*} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 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]{% \boxed{ #1 }% } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Fix thickness of the `\underbracket`s. \makeatletter \MHInternalSyntaxOn \def\upbracketfill#1#2{% \edef\l_MT_bracketheight_fdim{\the\dimexpr 2\fontdimen8\textfont3}% \upbracketend{#1}{#2}% \leaders \vrule \@height \z@ \@depth #1 \hfill \upbracketend{#1}{#2}% } \MHInternalSyntaxOff\showthe\catcode`@ \makeatother %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Additional math macros and symbols. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Brackets and other extensible symbols. \newcommand{\Rbrac}[1]{\Brac({ #1 })} \newcommand{\Sbrac}[1]{\Brac[{ #1 }]} \newcommand{\Cbrac}[1]{\Brac\{{ #1 }\}} \newcommand{\Abrac}[1]{\Brac\langle{ #1 }\rangle} \newcommand{\abs}[1]{\Brac\lvert{ #1 }\rvert} \newcommand{\norm}[1]{\Brac\lVert{ #1 }\rVert} \newcommand{\floor}[1]{\Brac\lfloor{ #1 }\rfloor} \newcommand{\ceil}[1]{\Brac\lceil{ #1 }\rceil} \newcommand{\pair}[2]{\Rbrac{ #1, #2 }} \newcommand{\bra}[1]{\Brac\langle{ #1 }\rvert} \newcommand{\ket}[1]{\Brac\lvert{ #1 }\rangle} \newcommand{\braket}[2]{\Abrac{ #1 \middle\mvert #2 }} \newcommand{\ketbra}[2]{\ket{ #1 }\bra{ #2 }} \newcommand{\braopket}[3]{\Abrac{ #1 \middle\mvert #2 \middle\mvert #3 }}\newcommand{\expect}[1]{\Abrac{ #1 }} % \newcommand{\oSbrac}[2]{\mathord{ \overbracket{ #1 }\sp{ \Clap{ \text{#2} } } }} \newcommand{\uSbrac}[2]{\mathord{ \underbracket{ #1 }\sb{ \Clap{ \text{#2} } } }} \newcommand{\oCbrac}[2]{\mathord{ \overbrace{ #1 }\sp{ \Clap{ \text{#2} } } }} \newcommand{\uCbrac}[2]{\mathord{ \underbrace{ #1 }\sb{ \Clap{ \text{#2} } } }} % \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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Name aliases for easier writing. %%%%%%%%%%%%%%%%%%%% %% Relations. \newcommand{\defeq}{\mathrel{ \coloneq }} % \newcommand{\suchthat}{\mathord{ \middle\mvert }} \Let\given\suchthat %%%%%%%%%%%%%%%%%%%% %% Binary operators. \Let\xtimes\times \renewcommand{\times}{\mathbin{ \cdot }} %%%%%%%%%%%%%%%%%%%% %% Symbols. %%%%%%%%%% %%% Calc. \DeclareMathSymbol{\diffSymb}{\mathord}{operators}{`d} %%%%%%%%%% %%% Sets. \newcommand{\inter}{\mathrel{ \cap }} \newcommand{\union}{\mathrel{ \cup }} % \newcommand{\compl}[1]{\mathord{ #1^{ \complement } }} %%%%%%%%%% %%% 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 }} \newcommand{\SD}{\mathord{ \sigma }} \newcommand{\variance}{\SD\sp{ 2 }} % \DeclareMathSymbol{\probSymb}{\mathord}{operators}{`p} \newcommand{\Prob}[1]{\operatorname{ \probSymb } \Rbrac{ #1 }} \newcommand{\stdProb}[1]{\operatorname{ \Phi } \Rbrac{ #1 }} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Formal notation. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % `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 } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % `siunitx` declarations. %% Same behavior as `\ce` from `mhchem`. \sisetup{ detect-all, math-sf = \mathrm% hack since `\siunitx` thinks that math is also in sans serif. } %% Unit specifications. %\DeclareSIUnit{\molar}{\mole\per\deci\metre\cubed} \DeclareSIUnit{\molar}{M} \DeclareSIUnit{\litre}{\liter} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Drawings and graphisms. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage{ xcolor } \usepackage{ graphicx } \usepackage{ tikz } \usepackage{ chemfig } \usepackage{ pgfplots } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % `tikz` preparation. \usetikzlibrary{ calc, arrows.meta, decorations.markings, patterns.meta, bending } %% Make the `calc` library usable (doesn't work unless `$` is of catcode 3). \prefixMacro{\catcode`\$ 3}{tikz@startup@env} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 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 \), grid = major, clip = false, 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 = { mesh, very thick, opacity = 0.7, }, }, } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Typesetting. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Tables. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage{ array } \usepackage{ booktabs } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Column type declarations. \newcolumntype{T}{>{\bfseries}{c}} \newcolumntype{U}{>{\ttfamily}{r}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Fillers. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage{ mwe }% Loads lipsum, blindtext and graphicx %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Extensions to basic LaTeX typesetting. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage{ comment } \usepackage{ csquotes } \usepackage{ enumitem } \usepackage{ wrapfig } \usepackage{ ulem } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % `enumitem` settings. \setlist[itemize]{ label = {\( \bullet \)} } %% 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}, } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Prettier `\maketitle`. \makeatletter \def\@maketitle{% \begingroup\size{ 1.3em }% \newpage \null \vskip 2em% \begin{center}% \let \footnote \thanks {\LARGE\bfseries \@title \par}% \vskip 1.5em% {\normalsize \lineskip .5em% \begin{tabular}[t]{c}% \@author \end{tabular}\par}% \vskip 1em% {\normalsize \@date}% \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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Additional functionalities. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage{ lettrine } \usepackage{ etoc } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % `lettrine` setup. \renewcommand*{\LettrineFontHook}{\color{RoyalBlue4}\infamily} \setcounter{DefaultLines}{4} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 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}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Global changes and redefinitions. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage{ babel } \usepackage{ hyperref } %% shorthand to change `babel` languages. \Let\lang\setlanguage %% Fix a conflict between `hyperref` and `tikz`. \def\HyperFirstAtBeginDocument#1{#1} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Changes that are specific to Discord. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \size{ 24pt }% \newcommand{\fullW}{{% \par\noindent\hspace{ -15pt }% \color[HTML]{FDFDFD}\rule{\paperwidth}{0.1pt}\par% }} \AfterEndPreamble{% \catcode`\$ 12% \pagecolor[HTML]{7deeda}% \fullW\vspace{ -1.05em }% }