185 lines
7.2 KiB
Text
185 lines
7.2 KiB
Text
|
\usepackage{amsfonts}
|
||
|
\usepackage{amsmath}
|
||
|
\usepackage{amssymb}
|
||
|
\usepackage{amsthm}
|
||
|
\usepackage{environ}
|
||
|
\usepackage{etoolbox}
|
||
|
\usepackage{mathrsfs}
|
||
|
\usepackage{mathtools}
|
||
|
\usepackage{tcolorbox}
|
||
|
\usepackage{tikz}
|
||
|
\usepackage{xcolor}
|
||
|
\tcbuselibrary{breakable}
|
||
|
\tcbuselibrary{skins}
|
||
|
|
||
|
% A pretty color palette taken from https://flatuicolors.com/palette/defo. To
|
||
|
% see a preview of the different colors, use the \showcolors command below.
|
||
|
\definecolor{flatdarkgray}{HTML}{7F8C8D}
|
||
|
\definecolor{flatgray}{HTML}{BDC3C7}
|
||
|
\definecolor{flatred}{HTML}{C0392B}
|
||
|
\definecolor{flatorange}{HTML}{D35400}
|
||
|
\definecolor{flatyellow}{HTML}{F39C12}
|
||
|
\definecolor{flatdenim}{HTML}{2C3E50}
|
||
|
\definecolor{flatpurple}{HTML}{8E44AD}
|
||
|
\definecolor{flatblue}{HTML}{2980B9}
|
||
|
\definecolor{flatgreen}{HTML}{27AE60}
|
||
|
\definecolor{flatcyan}{HTML}{16A085}
|
||
|
\definecolor{flatdarkgrayalt}{HTML}{95A5A6}
|
||
|
\definecolor{flatgrayalt}{HTML}{ECF0F1}
|
||
|
\definecolor{flatredalt}{HTML}{E74C3C}
|
||
|
\definecolor{flatorangealt}{HTML}{E67E22}
|
||
|
\definecolor{flatyellowalt}{HTML}{F1C40F}
|
||
|
\definecolor{flatdenimalt}{HTML}{34495E}
|
||
|
\definecolor{flatpurplealt}{HTML}{9B59B6}
|
||
|
\definecolor{flatbluealt}{HTML}{3498DB}
|
||
|
\definecolor{flatgreenalt}{HTML}{2ECC71}
|
||
|
\definecolor{flatcyanalt}{HTML}{1ABC9C}
|
||
|
\definecolor{flatbrown}{HTML}{836953}
|
||
|
|
||
|
\newcommand{\showcolors}{%
|
||
|
\begin{center}
|
||
|
\begin{tikzpicture}
|
||
|
\tikzstyle{swatch}=[minimum width=3cm, minimum height=0.5cm, y=0.5cm]
|
||
|
\node[swatch, fill=flatdarkgray] at (0, 9) {\texttt{flatdarkgray}};
|
||
|
\node[swatch, fill=flatgray] at (0, 8) {\texttt{flatgray}};
|
||
|
\node[swatch, fill=flatred] at (0, 7) {\texttt{flatred}};
|
||
|
\node[swatch, fill=flatorange] at (0, 6) {\texttt{flatorange}};
|
||
|
\node[swatch, fill=flatyellow] at (0, 5) {\texttt{flatyellow}};
|
||
|
\node[swatch, fill=flatdenim] at (0, 4) {\texttt{flatdenim}};
|
||
|
\node[swatch, fill=flatpurple] at (0, 3) {\texttt{flatpurple}};
|
||
|
\node[swatch, fill=flatblue] at (0, 2) {\texttt{flatblue}};
|
||
|
\node[swatch, fill=flatgreen] at (0, 1) {\texttt{flatgreen}};
|
||
|
\node[swatch, fill=flatcyan] at (0, 0) {\texttt{flatcyan}};
|
||
|
\node[swatch, fill=flatdarkgrayalt] at (3, 9) {\texttt{flatdarkgrayalt}};
|
||
|
\node[swatch, fill=flatgrayalt] at (3, 8) {\texttt{flatgrayalt}};
|
||
|
\node[swatch, fill=flatredalt] at (3, 7) {\texttt{flatredalt}};
|
||
|
\node[swatch, fill=flatorangealt] at (3, 6) {\texttt{flatorangealt}};
|
||
|
\node[swatch, fill=flatyellowalt] at (3, 5) {\texttt{flatyellowalt}};
|
||
|
\node[swatch, fill=flatdenimalt] at (3, 4) {\texttt{flatdenimalt}};
|
||
|
\node[swatch, fill=flatpurplealt] at (3, 3) {\texttt{flatpurplealt}};
|
||
|
\node[swatch, fill=flatbluealt] at (3, 2) {\texttt{flatbluealt}};
|
||
|
\node[swatch, fill=flatgreenalt] at (3, 1) {\texttt{flatgreenalt}};
|
||
|
\node[swatch, fill=flatcyanalt] at (3, 0) {\texttt{flatcyanalt}};
|
||
|
\end{tikzpicture}
|
||
|
\end{center}
|
||
|
}
|
||
|
|
||
|
% New theorem environments.
|
||
|
\newtheorem{theorem}{Theorem}
|
||
|
\theoremstyle{definition}
|
||
|
\newtheorem{definition}{Definition}
|
||
|
\newtheorem{benchmark}{Benchmark}
|
||
|
\newtheorem{example}{Example}
|
||
|
\newtheorem{invariant}{Invariant}
|
||
|
|
||
|
% Toggleable TODOs.
|
||
|
\newtoggle{showtodos}
|
||
|
\toggletrue{showtodos}
|
||
|
% \togglefalse{showtodos}
|
||
|
\newcommand{\TODO}[2][]{%
|
||
|
\iftoggle{showtodos}{{\textcolor{blue}{\textbf{TODO(#1): #2}}}}{}%
|
||
|
}
|
||
|
|
||
|
% Toggleable notes.
|
||
|
\newtoggle{shownotes}
|
||
|
\toggletrue{shownotes}
|
||
|
% \togglefalse{shownotes}
|
||
|
\newcommand{\NOTE}[2][]{%
|
||
|
\iftoggle{shownotes}{{\textcolor{red}{NOTE(#1): #2}}}{}%
|
||
|
}
|
||
|
|
||
|
% Labels and references. To label a figure use the \figlabel command, to label
|
||
|
% a lemma, use the \lemlabel command, etc. Similarly, use the \figref, lemref,
|
||
|
% etc. commands to reference these labels. For example:
|
||
|
%
|
||
|
% \begin{figure}
|
||
|
% % ...
|
||
|
% \caption{A nice figure}\figlabel{MyNiceFigure}
|
||
|
% \end{figure}
|
||
|
%
|
||
|
% Refer to \figref{MyNiceFigure} for a nice figure.
|
||
|
%
|
||
|
% Toggle showlabels to show or hide all labels.
|
||
|
\newtoggle{showlabels}
|
||
|
% \toggletrue{showlabels}
|
||
|
\togglefalse{showlabels}
|
||
|
\newcommand{\genericlabel}[2]{%
|
||
|
\label{#1:#2}%
|
||
|
\iftoggle{showlabels}{\textcolor{flatdarkgray}{\texttt{[#2]}}}{}%
|
||
|
}
|
||
|
\newcommand{\algolabel}[1]{\genericlabel{alg}{#1}}
|
||
|
\newcommand{\algoref}[1]{Algorithm~\ref{alg:#1}}
|
||
|
\newcommand{\applabel}[1]{\genericlabel{app}{#1}}
|
||
|
\newcommand{\appref}[1]{Appendix~\ref{app:#1}}
|
||
|
\newcommand{\benchlabel}[1]{\genericlabel{bench}{#1}}
|
||
|
\newcommand{\benchref}[1]{Benchmark~\ref{bench:#1}}
|
||
|
\newcommand{\clmlabel}[1]{\genericlabel{clm}{#1}}
|
||
|
\newcommand{\clmref}[1]{Claim~\ref{clm:#1}}
|
||
|
\newcommand{\eqnlabel}[1]{\genericlabel{eqn}{#1}}
|
||
|
\newcommand{\eqnref}[1]{\eqref{eqn:#1}}
|
||
|
\newcommand{\invlabel}[1]{\genericlabel{inv}{#1}}
|
||
|
\newcommand{\invref}[1]{Invariant~\ref{inv:#1}}
|
||
|
\newcommand{\examplelabel}[1]{\genericlabel{exa}{#1}}
|
||
|
\newcommand{\exampleref}[1]{Example~\ref{exa:#1}}
|
||
|
\newcommand{\figlabel}[1]{\genericlabel{fig}{#1}}
|
||
|
\newcommand{\figref}[1]{Figure~\ref{fig:#1}}
|
||
|
\newcommand{\lemlabel}[1]{\genericlabel{lem}{#1}}
|
||
|
\newcommand{\lemref}[1]{Lemma~\ref{lem:#1}}
|
||
|
\newcommand{\linelabel}[1]{\genericlabel{line}{#1}}
|
||
|
\newcommand{\lineref}[1]{line~\ref{line:#1}}
|
||
|
\newcommand{\Lineref}[1]{Line~\ref{line:#1}}
|
||
|
\newcommand{\lstlabel}[1]{\genericlabel{lst}{#1}}
|
||
|
\newcommand{\lstref}[1]{Listing~\ref{lst:#1}}
|
||
|
\newcommand{\seclabel}[1]{\genericlabel{sec}{#1}}
|
||
|
\newcommand{\secref}[1]{Section~\ref{sec:#1}}
|
||
|
\newcommand{\appendixlabel}[1]{\genericlabel{appendix}{#1}}
|
||
|
\newcommand{\appendixref}[1]{Appendix~\ref{appendix:#1}}
|
||
|
\newcommand{\tablabel}[1]{\genericlabel{tab}{#1}}
|
||
|
\newcommand{\tabref}[1]{Table~\ref{tab:#1}}
|
||
|
\newcommand{\thmlabel}[1]{\genericlabel{thm}{#1}}
|
||
|
\newcommand{\thmref}[1]{Theorem~\ref{thm:#1}}
|
||
|
|
||
|
% Surrounding symbols.
|
||
|
\DeclarePairedDelimiter{\parens}{(}{)}
|
||
|
\DeclarePairedDelimiter{\set}{\{}{\}}
|
||
|
\DeclarePairedDelimiterX{\setst}[2]{\{}{\}}{#1 \,\delimsize|\, #2}
|
||
|
\DeclarePairedDelimiter{\brackets}{[}{]}
|
||
|
\DeclarePairedDelimiterX{\pfrac}[2]{(}{)}{\frac{#1}{#2}}
|
||
|
\DeclarePairedDelimiter{\ceil}{\lceil}{\rceil}
|
||
|
\DeclarePairedDelimiter{\floor}{\lfloor}{\rfloor}
|
||
|
|
||
|
% Symbols and abbreviations.
|
||
|
\newcommand{\nats}{\mathbb{N}}
|
||
|
\newcommand{\ints}{\mathbb{Z}}
|
||
|
\newcommand{\rats}{\mathbb{Q}}
|
||
|
\newcommand{\reals}{\mathbb{R}}
|
||
|
\newcommand{\complexes}{\mathbb{C}}
|
||
|
\newcommand{\partialto}{\rightharpoonup}
|
||
|
% https://tex.stackexchange.com/a/74132
|
||
|
\newcommand{\defeq}{\stackrel{\mathclap{\mbox{\normalfont \tiny def}}}{=}}
|
||
|
|
||
|
|
||
|
% Misc.
|
||
|
\newcommand{\defword}[1]{\textbf{\textcolor{flatdenim}{#1}}}
|
||
|
|
||
|
% Tech report environment.
|
||
|
%
|
||
|
% If you're writing a paper and there's too much content, you might want to
|
||
|
% move some content out of the paper and into the technical report version of
|
||
|
% the paper. To do this, you can put the content in the techreport environment
|
||
|
% like this:
|
||
|
%
|
||
|
% This text will appear in the paper and tech report.
|
||
|
% \begin{techreport}
|
||
|
% This text will only appear in the tech report.
|
||
|
% \end{techreport}
|
||
|
%
|
||
|
% When the techreportenabled toggle is enabled, the tech report content will be
|
||
|
% shown. When the toggle is disabled, the tech report content will be hidden.
|
||
|
% Moreover, when the toggle is enabled, the tech report content will be shown
|
||
|
% with a red bar on its left margin to make it easier for readers to figure out
|
||
|
% what is new in the tech report.
|
||
|
\newtoggle{techreportenabled}
|
||
|
\toggletrue{techreportenabled}
|
||
|
\togglefalse{techreportenabled}
|