2022-02-10 21:12:20 +00:00
|
|
|
\NeedsTeXFormat{LaTeX2e}
|
|
|
|
\ProvidesPackage{cheatsheet}[2022/02/10 Cheatsheet package]
|
|
|
|
|
|
|
|
%-------------------------------------------------------------------------------
|
|
|
|
% 3rd party packages
|
|
|
|
%-------------------------------------------------------------------------------
|
|
|
|
%
|
|
|
|
\RequirePackage[utf8]{inputenc}
|
|
|
|
%
|
|
|
|
\RequirePackage[T1]{fontenc}
|
|
|
|
% Needed to configure page layout
|
|
|
|
\RequirePackage[landscape]{geometry}
|
|
|
|
% Needed to make header & footer effeciently
|
|
|
|
\RequirePackage{fancyhdr}
|
|
|
|
% Needed to manage colors
|
|
|
|
\RequirePackage{xcolor}
|
|
|
|
% Needed to deal hyperlink
|
|
|
|
\RequirePackage[hidelinks,unicode,pdfencoding=auto]{hyperref}
|
|
|
|
% Needed to create multicolumn environment
|
|
|
|
\RequirePackage{multicol}
|
|
|
|
% Needed for math
|
|
|
|
\RequirePackage{amsmath,amsthm,amsfonts,amssymb}
|
|
|
|
% Needed for color and graphics
|
|
|
|
\RequirePackage{color,graphicx,overpic}
|
|
|
|
% Needed to present code
|
|
|
|
\RequirePackage{listings}
|
|
|
|
% less space for headers
|
|
|
|
\RequirePackage[compact]{titlesec}
|
|
|
|
% less space for lists
|
|
|
|
\RequirePackage{mdwlist}
|
|
|
|
%
|
|
|
|
\RequirePackage{pdflscape}
|
|
|
|
%
|
|
|
|
\RequirePackage{verbatim}
|
|
|
|
% Needed to create boxes
|
|
|
|
\RequirePackage[most]{tcolorbox}
|
|
|
|
%
|
|
|
|
\RequirePackage{bussproofs}
|
|
|
|
% Needed to create header and footer
|
|
|
|
\RequirePackage{fancyhdr}
|
|
|
|
% Needed to get last page of document
|
|
|
|
\RequirePackage{lastpage}
|
2022-02-14 17:26:56 +00:00
|
|
|
% Tables
|
2022-02-27 09:02:58 +00:00
|
|
|
\RequirePackage{tabularx}
|
|
|
|
% Icons
|
|
|
|
\usepackage{pifont}
|
2022-02-10 21:12:20 +00:00
|
|
|
%-------------------------------------------------------------------------------
|
|
|
|
% Configuration for options
|
|
|
|
%-------------------------------------------------------------------------------
|
|
|
|
% Defines the date for letter (cover letter only)
|
|
|
|
% Usage: \letterdate{<date>}
|
|
|
|
\newcommand*{\cheatsheettitle}[1]{\def\@cheatsheettitle{#1}}
|
|
|
|
\newcommand*{\cheatsheetauthor}[1]{\def\@cheatsheetauthor{#1}}
|
|
|
|
|
|
|
|
|
|
|
|
%-------------------------------------------------------------------------------
|
|
|
|
% Configuration for layout
|
|
|
|
%-------------------------------------------------------------------------------
|
|
|
|
%% Page Layout
|
|
|
|
% Configure page margins with geometry
|
|
|
|
\geometry{top=1.3cm, left=1cm, right=1cm, bottom=1.2cm, footskip=.5cm}
|
|
|
|
|
|
|
|
%% Header & Footer
|
|
|
|
% Set offset to each header and footer
|
|
|
|
\fancyhfoffset{0em}
|
|
|
|
% Remove head rule
|
|
|
|
\renewcommand{\headrulewidth}{0pt}
|
|
|
|
% Clear all header & footer fields
|
|
|
|
\fancyhf{}
|
|
|
|
% Enable if you want to make header or footer using fancyhdr
|
|
|
|
\pagestyle{fancy}
|
|
|
|
|
|
|
|
%-------------------------------------------------------------------------------
|
|
|
|
% Configuration for colors
|
|
|
|
%-------------------------------------------------------------------------------
|
|
|
|
% Basic colors
|
|
|
|
\definecolor{green}{HTML}{C2E15F}
|
|
|
|
\definecolor{orange}{HTML}{FDA333}
|
|
|
|
\definecolor{purple}{HTML}{D3A4F9}
|
|
|
|
\definecolor{yellow}{HTML}{EBE64B}
|
|
|
|
\definecolor{red}{HTML}{FB4485}
|
|
|
|
\definecolor{blue}{HTML}{6CE0F1}
|
|
|
|
\definecolor{codegreen}{rgb}{0,0.6,0}
|
|
|
|
\definecolor{codegray}{rgb}{0.5,0.5,0.5}
|
|
|
|
\definecolor{codepurple}{rgb}{0.58,0,0.82}
|
|
|
|
\definecolor{codeback}{rgb}{0.95,0.95,0.92}
|
|
|
|
|
|
|
|
%-------------------------------------------------------------------------------
|
|
|
|
% Configuration for styles
|
|
|
|
%-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
% header and footer style
|
|
|
|
\pagestyle{fancy}
|
|
|
|
\fancyhf{}
|
|
|
|
% header title
|
|
|
|
\fancyhead[L]{\@cheatsheettitle}
|
|
|
|
% show current and total pages
|
|
|
|
\fancyfoot[L]{\thepage/\pageref{LastPage}}
|
|
|
|
% top bar
|
|
|
|
\renewcommand{\headrulewidth}{0pt}
|
|
|
|
% bottom bar
|
|
|
|
\renewcommand{\footrulewidth}{0pt}
|
|
|
|
|
2022-02-14 17:26:56 +00:00
|
|
|
%%% Tables
|
|
|
|
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
|
|
|
|
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
|
|
|
|
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}}
|
|
|
|
|
2022-02-27 09:02:58 +00:00
|
|
|
%%% Checkmarks and Crosses
|
|
|
|
\newcommand{\cmark}{\ding{51}}
|
|
|
|
\newcommand{\xmark}{\ding{55}}
|
|
|
|
|
2022-02-10 21:12:20 +00:00
|
|
|
%%% Code Listings
|
|
|
|
\lstdefinestyle{mystyle}{
|
|
|
|
backgroundcolor=\color{codeback}, % choose the background color;
|
|
|
|
basicstyle=\ttfamily, % the size of the fonts that are used for the code
|
|
|
|
breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace
|
|
|
|
breaklines=true, % sets automatic line breaking
|
|
|
|
captionpos=b, % sets the caption-position to bottom
|
|
|
|
commentstyle=\color{codegreen}\textit, % comment style
|
|
|
|
deletekeywords={...}, % if you want to delete keywords from the given language
|
|
|
|
escapeinside={\%*}{*)}, % if you want to add LaTeX within your code
|
|
|
|
extendedchars=true, % lets you use non-ASCII characters; for 8-bits encodings only, does not work with UTF-8
|
|
|
|
frame=tb, % adds a frame around the code
|
|
|
|
keepspaces=true, % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible)
|
|
|
|
keywordstyle=\color{magenta}\bfseries, % keyword style
|
|
|
|
language=Python, % the language of the code (can be overrided per snippet)
|
|
|
|
otherkeywords={*,...}, % if you want to add more keywords to the set
|
|
|
|
numbers=left, % where to put the line-numbers; possible values are (none, left, right)
|
|
|
|
numbersep=5pt, % how far the line-numbers are from the code
|
|
|
|
numberstyle=\tiny\color{codegray}, % the style that is used for the line-numbers
|
|
|
|
rulecolor=\color{black}, % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here))
|
|
|
|
showspaces=false, % show spaces everywhere adding particular underscores; it overrides 'showstringspaces'
|
|
|
|
showstringspaces=false, % underline spaces within strings only
|
|
|
|
showtabs=false, % show tabs within strings adding particular underscores
|
|
|
|
stepnumber=1, % the step between two line-numbers. If it's 1, each line will be numbered
|
|
|
|
stringstyle=\color{codepurple}, % string literal style
|
|
|
|
tabsize=2, % sets default tabsize to 2 spaces
|
|
|
|
title=\lstname, % show the filename of files included with \lstinputlisting; also try caption instead of title
|
|
|
|
columns=fixed % Using fixed column width (for e.g. nice alignment)
|
|
|
|
}
|
|
|
|
\lstset{style=mystyle, upquote=true}
|
|
|
|
|
|
|
|
%textmarker style from colorbox doc
|
|
|
|
\tcbset{textmarker/.style={%
|
|
|
|
enhanced,
|
|
|
|
parbox=false,boxrule=0mm,boxsep=0mm,arc=0mm,
|
|
|
|
outer arc=0mm,left=2mm,right=2mm,top=3pt,bottom=3pt,
|
|
|
|
toptitle=1mm,bottomtitle=1mm,oversize}}
|
|
|
|
|
|
|
|
% define new colorboxes
|
|
|
|
\newtcolorbox{hintBox}{textmarker,
|
2022-02-14 17:26:56 +00:00
|
|
|
borderline west={4pt}{0pt}{yellow},
|
2022-02-10 21:12:20 +00:00
|
|
|
colback=yellow!10!white}
|
|
|
|
\newtcolorbox{importantBox}{textmarker,
|
2022-02-14 17:26:56 +00:00
|
|
|
borderline west={4pt}{0pt}{red},
|
2022-02-10 21:12:20 +00:00
|
|
|
colback=red!10!white}
|
|
|
|
\newtcolorbox{noteBox}{textmarker,
|
2022-02-14 17:26:56 +00:00
|
|
|
borderline west={4pt}{0pt}{green},
|
2022-02-10 21:12:20 +00:00
|
|
|
colback=green!10!white}
|
2022-02-14 17:26:56 +00:00
|
|
|
\newtcolorbox{redbox}{leftrule=3mm,
|
|
|
|
colback=red!5!white,colframe=red!75!black
|
|
|
|
}
|
|
|
|
% define new text higlights
|
|
|
|
\newtcbox{\lhigh}[1][red]{on line, arc=0pt,outer arc=0pt,colback=#1!10!white,colframe=#1!50!black, boxsep=0pt,left=0pt,right=0pt,top=1pt,bottom=1pt, boxrule=0pt,bottomrule=1pt,toprule=1pt}
|
|
|
|
\newtcbox{\rhigh}[1][red]{on line, arc=7pt,colback=#1!10!white,colframe=#1!50!black, before upper={\rule[-3pt]{0pt}{10pt}},boxrule=.5pt, boxsep=0pt,left=2.5pt,right=2.5pt,top=0pt,bottom=0pt}
|
2022-02-10 21:12:20 +00:00
|
|
|
|
|
|
|
% define commands for easy access
|
|
|
|
\renewcommand{\note}[2]{\begin{noteBox} \textbf{#1} #2 \end{noteBox}}
|
2022-02-14 17:26:56 +00:00
|
|
|
\newcommand{\warning}[2]{\begin{hintBox} \textbf{#1} #2 \end{hintBox}}
|
|
|
|
\newcommand{\important}[2]{\begin{importantBox} \textbf{#1} #2 \end{importantBox}}
|
|
|
|
\newcommand{\headnote}[2]{
|
|
|
|
\begin{tcolorbox}[colback=red!5!white,colframe=red!75!black,title=#1] #2 \end{tcolorbox}
|
|
|
|
}
|
|
|
|
\newcommand{\headcenternote}[2]{
|
|
|
|
\newtcolorbox{mybox}[2][]{colback=red!5!white,
|
|
|
|
colframe=red!75!black,fonttitle=\bfseries,
|
|
|
|
colbacktitle=red!85!black,enhanced,
|
|
|
|
attach boxed title to top center={yshift=-2mm},
|
|
|
|
title={#2},#1}
|
|
|
|
\begin{mybox}[colback=yellow]{#1} #2 \end{mybox}
|
|
|
|
}
|
|
|
|
|
|
|
|
% define cardbox
|
|
|
|
\newcommand{\flashcard}[4]{
|
|
|
|
\vspace{.1cm}
|
|
|
|
\fbox{\parbox[t][1in][c]{2in}{%
|
|
|
|
\footnotesize\textsc{#1}\par\vspace*{\fill}\par
|
|
|
|
\centerline{\textbf{#2}}\par\vspace*{\fill}\par
|
|
|
|
\hspace*{\fill}\textsc{#3}}}
|
|
|
|
\fbox{\parbox[t][1in][c]{2in}{%
|
|
|
|
\footnotesize\vspace*{\fill}\par\begin{center} #4 \end{center}\par\vspace*{\fill}}}
|
|
|
|
}
|
2022-02-10 21:12:20 +00:00
|
|
|
|
|
|
|
% Redefine section commands to use less space
|
|
|
|
\makeatletter
|
|
|
|
\renewcommand{\section}{\@startsection{section}{1}{0mm}%
|
|
|
|
{-1ex plus -.5ex minus -.2ex}%
|
|
|
|
{0.5ex plus .2ex}%x
|
|
|
|
{\normalfont\large\bfseries}}
|
|
|
|
\renewcommand{\subsection}{\@startsection{subsection}{2}{0mm}%
|
|
|
|
{-1explus -.5ex minus -.2ex}%
|
|
|
|
{0.5ex plus .2ex}%
|
|
|
|
{\normalfont\normalsize\bfseries}}
|
|
|
|
\renewcommand{\subsubsection}{\@startsection{subsubsection}{3}{0mm}%
|
|
|
|
{-1ex plus -.5ex minus -.2ex}%
|
|
|
|
{1ex plus .2ex}%
|
|
|
|
{\normalfont\small\bfseries}}
|
|
|
|
\makeatother
|
|
|
|
|
|
|
|
% Don't print section numbers
|
|
|
|
\setcounter{secnumdepth}{0}
|
|
|
|
|
|
|
|
% compress space
|
|
|
|
\setlength{\parindent}{0pt}
|
|
|
|
\setlength{\parskip}{0pt}
|
|
|
|
\setlength\abovedisplayskip{0pt}
|
|
|
|
\setlength{\parsep}{0pt}
|
|
|
|
\setlength{\topskip}{0pt}
|
|
|
|
\setlength{\topsep}{0pt}
|
|
|
|
\setlength{\partopsep}{0pt}
|
|
|
|
\setlength{\premulticols}{1pt}
|
|
|
|
\setlength{\postmulticols}{1pt}
|
|
|
|
\setlength{\multicolsep}{5pt}
|
|
|
|
\setlength{\columnsep}{.8cm}
|
|
|
|
\linespread{0.5}
|
|
|
|
\titlespacing{\section}{0pt}{*0}{*0}
|
|
|
|
\titlespacing{\subsection}{0pt}{*0}{*0}
|
|
|
|
\titlespacing{\subsubsection}{0pt}{*0}{*0}
|
|
|
|
\raggedright
|
|
|
|
|
|
|
|
%-------------------------------------------------------------------------------
|
|
|
|
% Configuration other
|
|
|
|
%-------------------------------------------------------------------------------
|
|
|
|
\hypersetup{%
|
|
|
|
pdftitle={\@cheatsheettitle - Cheatsheet},
|
|
|
|
pdfauthor={\@cheatsheetauthor},
|
|
|
|
pdfsubject={\@cheatsheettitle},
|
|
|
|
pdfkeywords={\@cheatsheettitle, Cheatsheet}
|
|
|
|
}
|
|
|
|
|
|
|
|
\pdfinfo{
|
|
|
|
/Title (\@cheatsheettitle - Cheatsheet)
|
|
|
|
/Creator (TeX)
|
|
|
|
/Producer (pdfTeX 1.40.0)
|
|
|
|
/Author (\@cheatsheetauthor)
|
|
|
|
/Subject ()
|
|
|
|
}
|
|
|
|
|