I have two somewhat related questions:
1. Is there a way for macros to check how many arguments were passed, and change its output depending on this? At the moment I found a solution using an =(eval...)= macro, which checks the values of $1, $2, etc. and produces the appropriate string. It works, but I wonder if there's a more org-native way.
2. Related to my workaround above, I am wondering if there's a way to refer to a source block as the macro definition. At the moment I just joined my whole elisp block into a single line for the macro definition, but I would love to have it in a proper source block so I can edit it properly, have indentation and syntax highlighting, etc.