\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{Abyssion} \pdfinfo{ /Title (kdoc.pdf) /Creator (Cheatography) /Author (Abyssion) /Subject (KDoc Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{7444FF} \definecolor{LightBackground}{HTML}{F6F3FF} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{KDoc Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{Abyssion} via \textcolor{DarkBackground}{\uline{cheatography.com/187826/cs/45836/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}Abyssion \\ \uline{cheatography.com/abyssion} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Not Yet Published.\\ Updated 7th March, 2025.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{tabularx}{17.67cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{17.67cm}}{\bf\textcolor{white}{Example}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{/{\bf{ \newline * A group of *members*. \newline * \newline * This class has no useful logic; it's just a documentation example. \newline * \newline * @param T the type of a member in this group. \newline * @property name the name of this group. \newline * @constructor Creates an empty group. \newline */ \newline class Group\textless{}T\textgreater{}(val name: String) \{ \newline /}} \newline {\emph{ Adds a {[}member{]} to this group. \newline }} @return the new size of the group. \newline */ \newline fun add(member: T): Int \{ ... \} \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{7.9442 cm} x{9.3258 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{Block Tags}} \tn % Row 0 \SetRowColor{LightBackground} @param & Documents a value parameter of a function or a type parameter of a class, property or function. \tn % Row Count 5 (+ 5) % Row 1 \SetRowColor{white} @param{[}{\emph{name}}{]} & To better separate the parameter name from the description, if you prefer, you can enclose the name of the parameter in brackets. \tn % Row Count 12 (+ 7) % Row 2 \SetRowColor{LightBackground} @return & Documents the return value of a function. \tn % Row Count 14 (+ 2) % Row 3 \SetRowColor{white} @constructor & Documents the primary constructor of a class. \tn % Row Count 17 (+ 3) % Row 4 \SetRowColor{LightBackground} @receiver & Documents the receiver of an extension function. \tn % Row Count 20 (+ 3) % Row 5 \SetRowColor{white} @property & Documents the property of a class which has the specified name. This tag can be used for documenting properties declared in the primary constructor, where putting a doc comment directly before the property definition would be awkward. \tn % Row Count 32 (+ 12) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{7.9442 cm} x{9.3258 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{Block Tags (cont)}} \tn % Row 6 \SetRowColor{LightBackground} @throws class, @exception class & Documents an exception which can be thrown by a method. Since Kotlin does not have checked exceptions, there is also no expectation that all possible exceptions are documented, but you can still use this tag when it provides useful information for users of the class. \tn % Row Count 13 (+ 13) % Row 7 \SetRowColor{white} @sample {\emph{identifier}} & Embeds the body of the function with the specified qualified name into the documentation for the current element, in order to show an example of how the element could be used. \tn % Row Count 22 (+ 9) % Row 8 \SetRowColor{LightBackground} @see {\emph{identifier}} & Adds a link to the specified class or method to the See also block of the documentation. \tn % Row Count 27 (+ 5) % Row 9 \SetRowColor{white} @author & Specifies the author of the element being documented. \tn % Row Count 30 (+ 3) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{7.9442 cm} x{9.3258 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{Block Tags (cont)}} \tn % Row 10 \SetRowColor{LightBackground} @since & Specifies the version of the software in which the element being documented was introduced \tn % Row Count 5 (+ 5) % Row 11 \SetRowColor{white} @suppress & Excludes the element from the generated documentation. Can be used for elements which are not part of the official API of a module but still have to be visible externally. \tn % Row Count 14 (+ 9) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \end{document}