%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% 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 }{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 } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 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. %% Doesn't work with `endfloat`… % \AtBeginDocument{\begin{CJK}{UTF8}{gkai}} % \AtEndDocument{\clearpage\end{CJK}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Page layout and font modifications. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage{ geometry } \usepackage{ parskip } \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} {} {} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 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. \Let\caret\textasciicircum \Let\til\tilde% for adding the tilde as accent. \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} \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. \renewenvironment{cases}[1][ l ] {\left\{ \begin{eqnbox*}[% \IEEEeqnarraystrutmode\IEEEeqnarraystrutsizeadd{1pt}{1pt}% ][ c ]{ #1?l }} {\end{eqnbox*} \right.} % \renewenvironment{cases*}[1][ l ] {\left\{ \begin{eqnbox*}[% \IEEEeqnarraystrutmode\IEEEeqnarraystrutsizeadd{1pt}{1pt}% ][ c ]{ #1?s }} {\end{eqnbox*} \right.} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 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 }% } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 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{\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]{\BracR{ #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 }} %%%%%%%%%%%%%%%%%%%% %% 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 }} \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 }} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 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. \Let\vec\vv %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % `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}{\liter} \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). \prefixMacro{\catcode`\$ = 3}{tikz@startup@env} %% 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{ 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{ stackengine } \usepackage{ titlesec } \usepackage{ csquotes } \usepackage{ enumitem } \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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % `enumitem` settings. \setlist[itemize]{ label = {\( \bullet \)} } \setlist[description]{ style = nextline, % labelwidth = 0pt, % labelsep = \leftmargin, } %% 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}, } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 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{ biblatex } \usepackage{ lettrine } \usepackage{ truncate } \usepackage{ pageslts } \usepackage{ etoc } \usepackage{ titleps } \usepackage{ comment } \usepackage{ endfloat } \usepackage{ newfloat } \usepackage{ timetable } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % `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}{\partname~\thepart\quad\parttitle} \newcommand{\@headSection}{\thesection\quad\sectiontitle} % \newcommand{\headTitle}[2][]{% \ifblank{#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 \thepage{} of \lastpageref{VeryLastPage}}~~\adforn{46}} {} % \renewcommand{\makeheadrule}{\raisebox{ -1em }{\parbox{\linewidth}{\hrulefill \raisebox{ -0.25em }{\quad\adforn{21}~~\adforn{4}~~\adforn{49}\quad} \hrulefill}}} } \makeatother \pagestyle{fancy} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % `endfloat` setup. %% Change appearance. \renewcommand{\efloatseparator}{\ignorepars} \renewcommand{\efloatheading}[1]{% \markboth% {}% {}% } %% Remove header titles. \prefixMacro{\headPart{}\headSection{}}{processdelayedfloats} %% Inline version of floats. \makeatletter \DeclareFloatingEnvironment[ fileext = lot, placement = !htbp, ]{Table} \DeclareFloatingEnvironment[ fileext = lof, placement = !htbp, ]{Figure} \makeatother %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Nice timetables. %% Default font family. \renewcommand{\TTableFont}{} %% Shorthand for courses. \newcommand{\CourseCode}[2] {% {\bfseries\ttfamily#1\null}\\#2% } %% Layout of timetables. \setSlotSize{ 12em }{ 2.5em } % \setSlotCount{ 5 }{ 60 } \setTopHeight{ 1 } \setTextFrame{ 0.5em } %% Sharp corners. \setFrameType[t]{ 2 } \setEventCornerRadius{ 0pt } %% Print timestamps into event blocks. \setPrintTimestamps{ 2 } %% Define event types. \defineEvent{Lecture} {0.75}{0.82}{1.0} {0.0}{0.0}{0.0} \defineEvent{Exercises} {1.0}{0.85}{0.8} {0.0}{0.0}{0.0} \defineEvent{Practical} {0.75}{1.0}{0.85} {0.0}{0.0}{0.0} %% General shorthand command. \newcommand{\Timetable}[4][\linewidth]{% width, columns, lines, content \setSlotCount{ #2 }{ #3 }% \noindent\resizebox{#1}{!}{% \begin{timetable}% #4% \end{timetable}% }% } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 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{% \catcode`\$ 12% %\setBG{7deeda}% \fullW% }