#LyX 2.4 created this file. For more info see https://www.lyx.org/ \lyxformat 614 \begin_document \begin_header \save_transient_properties true \origin unavailable \textclass article \use_default_options false \maintain_unincluded_children no \language english \language_package default \inputencoding auto-legacy \fontencoding auto \font_roman "default" "default" \font_sans "default" "default" \font_typewriter "default" "default" \font_math "auto" "auto" \font_default_family default \use_non_tex_fonts false \font_sc false \font_roman_osf false \font_sans_osf false \font_typewriter_osf false \font_sf_scale 100 100 \font_tt_scale 100 100 \use_microtype false \use_dash_ligatures true \graphics default \default_output_format default \output_sync 0 \bibtex_command default \index_command default \paperfontsize default \use_hyperref false \papersize default \use_geometry false \use_package amsmath 1 \use_package amssymb 1 \use_package cancel 1 \use_package esint 1 \use_package mathdots 0 \use_package mathtools 1 \use_package mhchem 1 \use_package stackrel 1 \use_package stmaryrd 1 \use_package undertilde 1 \cite_engine basic \cite_engine_type default \biblio_style plain \use_bibtopic false \use_indices false \paperorientation portrait \suppress_date false \justification true \use_refstyle 0 \use_minted 0 \use_lineno 0 \index Index \shortcut idx \color #008000 \end_index \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \paragraph_indentation default \is_math_indent 0 \math_numbering_side default \quotes_style english \dynamic_quotes 0 \papercolumns 1 \papersides 1 \paperpagestyle default \tablestyle default \tracking_changes false \output_changes false \change_bars false \postpone_fragile_content false \html_math_output 0 \html_css_as_file 0 \html_be_strict false \docbook_table_output 0 \docbook_mathml_prefix 1 \end_header \begin_body \begin_layout Title Macro Testcases \end_layout \begin_layout Enumerate Simple macro definitions with position awareness: \begin_inset FormulaMacro \newcommand{\bla}{42} \end_inset \begin_inset Formula \[ \bla\mbox{ should look like }42 \] \end_inset now redefined as \begin_inset FormulaMacro \renewcommand{\bla}{21} \end_inset , such that \begin_inset Formula \[ \bla\mbox{ should look like }21. \] \end_inset \end_layout \begin_layout Enumerate Redefinitions of macros appearing in the definition of another macro: \begin_inset FormulaMacro \newcommand{\fooa}{x} \end_inset \begin_inset FormulaMacro \newcommand{\foob}[1]{(#1\fooa)} \end_inset \begin_inset FormulaMacro \renewcommand{\fooa}{y} \end_inset with the \SpecialChar TeX code \begin_inset listings inline false status open \begin_layout Plain Layout \backslash newcommand{ \backslash fooa}{x} \end_layout \begin_layout Plain Layout \backslash newcommand{ \backslash foob}[1]{(#1 \backslash fooa)} \end_layout \begin_layout Plain Layout \backslash renewcommand{ \backslash fooa}{y} \end_layout \end_inset gives the following: \begin_inset Formula \[ \foob{\fooa}\mbox{ should look like }(yy) \] \end_inset \end_layout \begin_layout Enumerate Arity change: \begin_inset FormulaMacro \newcommand{\foo}{-} \end_inset \begin_inset FormulaMacro \renewcommand{\foo}[2]{(#1,#2)} \end_inset \begin_inset Formula \[ \foo{abc}d\mbox{ should look like }(abc,d)\mbox{ if the second foo is there, otherwise like }-{abc}d \] \end_inset \end_layout \begin_layout Enumerate Arity change with incomplete arguments at line end: \begin_inset FormulaMacro \renewcommand{\foo}{-} \end_inset \begin_inset FormulaMacro \renewcommand{\foo}[2]{(#1,#2)} \end_inset \begin_inset Formula \[ \frac{\foo{abc}{}}{1}\mbox{ should be }\frac{(abc,\,)}{1}\mbox{ if the second foo is defined. Otherwise }\frac{-{abc}{}}{1} \] \end_inset \end_layout \begin_layout Enumerate Recursion: \begin_inset FormulaMacro \renewcommand{\foo}[1]{\foo{#1}{}} \end_inset . The inner foo should not we resolved as \SpecialChar TeX would give a infinite recursion. \end_layout \begin_layout Enumerate Recursive usage: \begin_inset FormulaMacro \renewcommand{\foo}[3]{\frac{{\displaystyle #1}\,{\displaystyle #2}}{{\displaystyle #3}}} \end_inset can be used to create tree-like structures like this one: \begin_inset Formula \[ \foo{\foo{42}{\foo{asdf}{asdf}{asdf}}{21}}{\foo{asdf}{asdf}{asdf}}{asdf}. \] \end_inset \end_layout \begin_layout Enumerate Folding/Unfolding: \begin_inset FormulaMacro \renewcommand{\foo}[2]{<#1|#2>} \end_inset . Start using Ctrl-+ and Ctrl– when you are inside of the macro to fold and unfold, e.g. here: \begin_inset Formula \[ \foo{\foo{42}{12}}{\foo{21}4}. \] \end_inset \end_layout \begin_layout Enumerate Scripts: \begin_inset FormulaMacro \renewcommand{\foo}[3][A][B]{(#1,#2)#3} \end_inset \begin_inset Formula \[ \foo[a]{}^{4}[b]c_{1}\mbox{ should look like }(a,B)\sqcup^{4}[b]c_{1} \] \end_inset \begin_inset Formula \[ \foo[a]c^{3}\mbox{ should look like }(a,B)c^{3} \] \end_inset \end_layout \begin_layout Enumerate Multiple optional parameters: \begin_inset FormulaMacro \renewcommand{\foo}[3][a][b][c]{(#1,#2,#3)} \end_inset \begin_inset Separator latexpar \end_inset \end_layout \begin_deeper \begin_layout Enumerate \begin_inset Formula $\foo[][B]123\mbox{ should be }(a,B,c)123$ \end_inset \end_layout \begin_layout Enumerate \begin_inset Formula $\foo[][][C]123\mbox{ should be }(a,b,C)123$ \end_inset \end_layout \end_deeper \end_body \end_document