Macros & programming
Defining macrosDefining commands (\newcommand): \newcommand{\x}[n]{...}・Optional arg [default]・\providecommand・\DeclareRobustCommand・Redefining commands (\renewcommand): \renewcommand・Redefining existing・\let・Macros with arguments: #1 … #9・Argument count [n]・With default・Macro argument limits: Up to 9 args・Fragile commands・\protect・Handy macros: Common shortcuts・Robust commands・How much to use macros: Balance with readability・Semantic macros・Naming commands: Starred commands・Avoiding clashesCustom environments (\newenvironment)\newenvironment・\renewenvironment・Environments with argsCounters & lengths\newcounter・\setcounter・\addtocounter・\value・\stepcounter・\newlength・\setlength・\addtolengthxparse (\NewDocumentCommand)\NewDocumentCommand・Arg spec (m o s)・\IfNoValueTFexpl3 / LaTeX3 layer\ExplSyntaxOn・\cs_new:Npn・\tl_set:Nn・\seq_ / \prop_・\clist_・l3 modulesProgramming helpersetoolbox / ifthen / calc: \newtoggle・\ifdef・\ifblank・\AtBeginDocument・\appto・\pretocmd・Key-value interfaces (pgfkeys): \pgfkeys・.store in・Handlers・\pgfqkeysCategory codes & \makeatletter\catcode・\makeatletter・\makeatother・Commands with @Package & class authoringWriting style files: .sty structure・\ProvidesPackage・\newcommand・Writing a package: \ProvidesPackage・\RequirePackage・.sty file・\DeclareOption