24 May
2018
24 May
'18
1:43 p.m.
Hi,
Arguments in brackets are always optional (if I don’t misunderstand), depending on your own logic (\if*argument, \ifempty etc.)
The original intent was for user-level commands to have square brackets for arguments setting things up, and curly braces for arguments that are actually typeset. That is where commands like \in come from, where the braced part is optional and the bracketed part required. Internal low-level commands tended to use braces more often because of efficiency considerations. (also, at the primitive level, TeX syntax is inconsistent anyway, with various primitives having quite different syntactical conventions). Nowadays, this is less relevant, with lots of stuff handled by lua instead. Best wishes, Taco