#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
