![Есть ли разница между \newcommand{\foo}{foo} и \newcommand{\foo}[0]{foo}?](https://rvso.com/image/348084/%D0%95%D1%81%D1%82%D1%8C%20%D0%BB%D0%B8%20%D1%80%D0%B0%D0%B7%D0%BD%D0%B8%D1%86%D0%B0%20%D0%BC%D0%B5%D0%B6%D0%B4%D1%83%20%5Cnewcommand%7B%5Cfoo%7D%7Bfoo%7D%20%D0%B8%20%5Cnewcommand%7B%5Cfoo%7D%5B0%5D%7Bfoo%7D%3F.png)
У меня есть соавтор, который определяет многие макросы как, например \newcommand{\foo}[0]{foo}
, явно указывая количество аргументов, даже если оно равно нулю, тогда как я раньше всегда использовал и видел это \newcommand{\foo}{foo}
для макросов без аргументов.
Есть ли какая-либо возможная разница в поведении между двумя версиями или есть ли какие-либо причины, помимо удобства чтения, чтобы предпочесть одну из них другой?
решение1
разницы нет, по сути [0]
это значение по умолчанию для необязательного аргумента, поэтому после первого сканирования для необязательного аргумента они следуют идентичным путям кода.