\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{Jacques Blom (jacquesblom)} \pdfinfo{ /Title (shopify-liquid.pdf) /Creator (Cheatography) /Author (Jacques Blom (jacquesblom)) /Subject (Shopify Liquid 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}{95BF47} \definecolor{LightBackground}{HTML}{F8FBF3} \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{Shopify Liquid Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{Jacques Blom (jacquesblom)} via \textcolor{DarkBackground}{\uline{cheatography.com/217031/cs/47570/}}} \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}Jacques Blom (jacquesblom) \\ \uline{cheatography.com/jacquesblom} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Published 10th January, 2026.\\ Updated 10th January, 2026.\\ 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{multicols*}{3} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Best Practices \& Tips}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Use \{\% render \%\} for isolated scope} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Use \{\% comment \%\} for inline notes} \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Avoid nested if statements} \tn % Row Count 3 (+ 1) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Use \{\% case \%\} for many options} \tn % Row Count 4 (+ 1) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Minimize use of filters in loops} \tn % Row Count 5 (+ 1) % Row 5 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Use snippets for reusable code} \tn % Row Count 6 (+ 1) % Row 6 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Separate concerns per file} \tn % Row Count 7 (+ 1) % Row 7 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Test variables with unless nil} \tn % Row Count 8 (+ 1) % Row 8 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Limit array iterations} \tn % Row Count 9 (+ 1) % Row 9 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Avoid complex conditional logic} \tn % Row Count 10 (+ 1) % Row 10 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Use forloop variables wisely} \tn % Row Count 11 (+ 1) % Row 11 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Check for nil before accessing} \tn % Row Count 12 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Want to use AI to \{\{link="https://www.fudge.ai/shopify-store-editor/"\}\}edit your shopify store\{\{/link\}\}? Try the \{\{link="https://www.fudge.ai/"\}\}Fudge AI Page Builder \& Store Editor\{\{/link\}\}.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{1.59264 cm} x{3.38436 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Common Objects}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{product}} & Current product object \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} {\bf{collection}} & Current collection object \tn % Row Count 3 (+ 2) % Row 2 \SetRowColor{LightBackground} {\bf{article}} & Current blog article \tn % Row Count 4 (+ 1) % Row 3 \SetRowColor{white} {\bf{shop}} & Shop/theme settings \tn % Row Count 5 (+ 1) % Row 4 \SetRowColor{LightBackground} {\bf{page}} & Current page object \tn % Row Count 6 (+ 1) % Row 5 \SetRowColor{white} {\bf{customer}} & Logged-in customer data \tn % Row Count 7 (+ 1) % Row 6 \SetRowColor{LightBackground} {\bf{cart}} & Shopping cart object \tn % Row Count 8 (+ 1) % Row 7 \SetRowColor{white} {\bf{settings}} & Theme configuration \tn % Row Count 9 (+ 1) % Row 8 \SetRowColor{LightBackground} {\bf{request}} & Request information (URL, etc) \tn % Row Count 11 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{Access global Liquid objects like product, collection, shop, and customer. These contain data about the current context. Properties are accessed using dot notation (e.g., product.title).} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Tags}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{Conditional statement}}} \tn \mymulticolumn{1}{x{5.377cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}`\{\% {\bf{if}} {\emph{condition}} \%\}\{\{nl\}\}...\{\{nl\}\}\{\% {\bf{endif}} \%\}`} \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{{\bf{Unless condition (opposite of if)}}} \tn \mymulticolumn{1}{x{5.377cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}`\{\% {\bf{unless}} {\emph{condition}} \%\}\{\{nl\}\}...\{\{nl\}\}\{\% endunless \%\}`} \tn % Row Count 6 (+ 3) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{Switch/Case statement}}} \tn \mymulticolumn{1}{x{5.377cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}`\{\% {\bf{case}} {\emph{variable}} \%\}\{\{nl\}\}...\{\{nl\}\}\{\% when value \%\}\{\{nl\}\}...\{\{nl\}\}\{\% {\bf{endcase}} \%\}`} \tn % Row Count 9 (+ 3) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{{\bf{Loop (for each item)}}} \tn \mymulticolumn{1}{x{5.377cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}`\{\% {\bf{for}} {\emph{item in collection}} \%\}\{\{nl\}\}...\{\{nl\}\}\{\% {\bf{endfor}} \%\}`} \tn % Row Count 12 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Liquid tags are used to create dynamic content and control flow in Shopify theme templates. They allow you to add conditional logic, loops, and variable assignments to your template code. Tags are enclosed in \{\% \%\} brackets.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Variable Assignment}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{Assign Variable}}} \tn \mymulticolumn{1}{x{5.377cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}`\{\% assign var = 'value' \%\}`} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{{\bf{Assign with Filter}}} \tn \mymulticolumn{1}{x{5.377cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}`\{\%​ assign var = var | filter \%\}`} \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{Capture Output}}} \tn \mymulticolumn{1}{x{5.377cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}`\{\%​ capture var \%\}\{\{nl\}\}content\{\{nl\}\}\{\%​ endcapture \%\}`} \tn % Row Count 7 (+ 3) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{{\bf{Increment Counter}}} \tn \mymulticolumn{1}{x{5.377cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}`\{\%​ increment var \%\}`} \tn % Row Count 9 (+ 2) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{Decrement Counter}}} \tn \mymulticolumn{1}{x{5.377cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}`\{\%​ decrement var \%\}`} \tn % Row Count 11 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Create variables using assign, capture output in variables, or use increment/decrement for counters. Variables are scoped to the template and can be reused throughout.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{2.68758 cm} x{2.28942 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Variable Output}} \tn % Row 0 \SetRowColor{LightBackground} \{\{ {\bf{variable}} \}\} & Output variable \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \{\{ {\bf{'text'}} \}\} & Output text string \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} \{\{ {\bf{5}} \}\} & Output number \tn % Row Count 3 (+ 1) % Row 3 \SetRowColor{white} \{\{ {\bf{product.title}} \}\} & Access object property \tn % Row Count 5 (+ 2) % Row 4 \SetRowColor{LightBackground} \{\{ {\bf{array{[}0{]}}} \}\} & Access array element by index \tn % Row Count 7 (+ 2) % Row 5 \SetRowColor{white} \{\{ {\bf{'text' | filter}} \}\} & Apply single filter to value \tn % Row Count 9 (+ 2) % Row 6 \SetRowColor{LightBackground} \{\{ {\bf{var1 | filter1 | filter2}} \}\} & Chain multiple filters \tn % Row Count 11 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{Output variables, strings, numbers, and access object properties and array elements using dot notation or bracket notation. Apply filters to transform values.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Template Tags}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{Include Snippet}}} \tn \mymulticolumn{1}{x{5.377cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}`\{\%​ {\bf{include}} 'snippet-name' \%\}`} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{{\bf{Include with Variable}}} \tn \mymulticolumn{1}{x{5.377cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}`\{\%​ {\bf{include}} 'snippet' {\bf{with}} product \%\}`} \tn % Row Count 5 (+ 3) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{Render Snippet (Isolated)}}} \tn \mymulticolumn{1}{x{5.377cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}`\{\%​ {\bf{render}} 'snippet-name' \%\}`} \tn % Row Count 7 (+ 2) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{{\bf{Comment Block}}} \tn \mymulticolumn{1}{x{5.377cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}`\{\%​ {\bf{comment}} \%\}...\{\%​ {\bf{endcomment}} \%\}`} \tn % Row Count 10 (+ 3) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{Raw/Literal Block}}} \tn \mymulticolumn{1}{x{5.377cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}`\{\%​ {\bf{raw}} \%\}...\{\%​ {\bf{endraw}} \%\}`} \tn % Row Count 12 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Include snippets, pass variables to includes, or use render for isolated scope. Use comment tags for multi-line comments or raw tags to prevent Liquid processing.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{2.4885 cm} x{2.4885 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Advanced Filters}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{base64\_encode}} & Encode to base64 \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} {\bf{base64\_decode}} & Decode from base64 \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} {\bf{url\_encode}} & Encode URL parameter \tn % Row Count 3 (+ 1) % Row 3 \SetRowColor{white} {\bf{url\_decode}} & Decode URL parameter \tn % Row Count 4 (+ 1) % Row 4 \SetRowColor{LightBackground} {\bf{escape}} & Escape HTML characters \tn % Row Count 6 (+ 2) % Row 5 \SetRowColor{white} {\bf{escape\_once}} & Escape only unescaped HTML \tn % Row Count 8 (+ 2) % Row 6 \SetRowColor{LightBackground} {\bf{json}} & Output as JSON string \tn % Row Count 10 (+ 2) % Row 7 \SetRowColor{white} {\bf{md5}} & MD5 hash \tn % Row Count 11 (+ 1) % Row 8 \SetRowColor{LightBackground} {\bf{sha1}} & SHA1 hash \tn % Row Count 12 (+ 1) % Row 9 \SetRowColor{white} {\bf{compact}} & Remove nil/null values \tn % Row Count 14 (+ 2) % Row 10 \SetRowColor{LightBackground} {\bf{default}}: 'fallback' & Fallback if nil/empty \tn % Row Count 16 (+ 2) % Row 11 \SetRowColor{white} {\bf{where\_exp}}: 'condition' & Advanced array filtering \tn % Row Count 18 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{Encode/decode base64 and URLs, escape HTML, generate hashes (MD5, SHA1), or output JSON. Use compact to remove nil values and where\_exp for complex array filtering.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{2.18988 cm} x{2.78712 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{String Filters}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{upcase}} & Convert to UPPERCASE \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} {\bf{downcase}} & Convert to lowercase \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} {\bf{capitalize}} & Capitalize first letter \tn % Row Count 4 (+ 2) % Row 3 \SetRowColor{white} {\bf{size}} & Get string/array length \tn % Row Count 6 (+ 2) % Row 4 \SetRowColor{LightBackground} {\bf{split}}: '|' & Split string by delimiter \tn % Row Count 8 (+ 2) % Row 5 \SetRowColor{white} {\bf{join}}: ', ' & Join array with separator \tn % Row Count 10 (+ 2) % Row 6 \SetRowColor{LightBackground} {\bf{strip}} & Remove whitespace \tn % Row Count 11 (+ 1) % Row 7 \SetRowColor{white} {\bf{append}}: 'text' & Add text to end \tn % Row Count 13 (+ 2) % Row 8 \SetRowColor{LightBackground} {\bf{prepend}}: 'text' & Add text to start \tn % Row Count 15 (+ 2) % Row 9 \SetRowColor{white} {\bf{remove}}: 'text' & Remove substring \tn % Row Count 17 (+ 2) % Row 10 \SetRowColor{LightBackground} {\bf{replace}}: 'a','b' & Replace 'a' with 'b' \tn % Row Count 19 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{Transform strings with upcase, downcase, capitalize, split, join, strip, and replace. Use size to get length. These filters are chainable for multiple transformations.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{1.84149 cm} x{3.13551 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Math Filters}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{plus}}: n & Add n to number \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} {\bf{minus}}: n & Subtract n from number \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} {\bf{times}}: n & Multiply number by n \tn % Row Count 3 (+ 1) % Row 3 \SetRowColor{white} {\bf{divided\_by}}: n & Divide number by n \tn % Row Count 5 (+ 2) % Row 4 \SetRowColor{LightBackground} {\bf{modulo}}: n & Get remainder of division \tn % Row Count 6 (+ 1) % Row 5 \SetRowColor{white} {\bf{round}}: n & Round to n decimals \tn % Row Count 7 (+ 1) % Row 6 \SetRowColor{LightBackground} {\bf{ceil}} & Round up to nearest integer \tn % Row Count 9 (+ 2) % Row 7 \SetRowColor{white} {\bf{floor}} & Round down to nearest integer \tn % Row Count 11 (+ 2) % Row 8 \SetRowColor{LightBackground} {\bf{abs}} & Absolute value \tn % Row Count 12 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{Perform mathematical operations on numbers with plus, minus, times, divided\_by, and modulo. Use round, ceil, and floor for rounding, or abs for absolute value.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{1.9908 cm} x{2.9862 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Array Filters}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{sort}} & Sort array alphabetically \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} {\bf{reverse}} & Reverse array order \tn % Row Count 3 (+ 1) % Row 2 \SetRowColor{LightBackground} {\bf{first}} & Get first element \tn % Row Count 4 (+ 1) % Row 3 \SetRowColor{white} {\bf{last}} & Get last element \tn % Row Count 5 (+ 1) % Row 4 \SetRowColor{LightBackground} {\bf{map}}: 'property' & Map/extract property from objects \tn % Row Count 7 (+ 2) % Row 5 \SetRowColor{white} {\bf{where}}: 'key','val' & Filter array by condition \tn % Row Count 9 (+ 2) % Row 6 \SetRowColor{LightBackground} {\bf{uniq}} & Remove duplicate values \tn % Row Count 10 (+ 1) % Row 7 \SetRowColor{white} {\bf{concat}}: array & Concatenate/join two arrays \tn % Row Count 12 (+ 2) % Row 8 \SetRowColor{LightBackground} {\bf{size}} & Get array length \tn % Row Count 13 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{Manipulate arrays with sort, reverse, first, last, and map. Filter arrays with where, remove duplicates with uniq, or join arrays with concat. Size returns array length.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}