Работа в системе LaTeX



         

Команда \newcommand со звездочкой


У команд \newcommand и \renewcommand существуют варианты " со звездочкой", называемые \newcommand* и \renewcommand. Они работают точно так же, как их тезки без звездочек, со следующим отличием: если команда с аргументами определена с помощью \newcommand* или \renewcommand*, то в ее аргументе не может содержаться пустая строка или команда \par. Если ваша команда определена с помощью \newcommand или \renewcommand без звездочки, то никаких ограничений на этот счет нет.

Смысл этого запрета таков. В большинстве случаев команды с аргументами, которые вы определяете, все равно не будут предусматривать подстановку вместо аргумента фрагмента текста, содержащего пустую строку или \par, так что этот запрет ни на чем не скажется (во всех примерах, приведенных в этой книге к настоящему моменту, можно совершенно безболезненно заменить \newcommand и \renewcommand на их варианты " со звездочкой"). А вот диагностика ошибок при наличии такого запрета облегчается. В самом деле, представим себе, что вы забыли набрать закрывающую фигурную скобку в аргументе команды (весьма распространенная ошибка!), как в следующем примере (забыта фигурная скобка в самой первой формуле; команду \smb мы определили в учебных целях раньше):

Символ Лежандра $\smb{a{l}$, где $a$ не делится на $l$, равен по определению $1$, если $a$ является квадратичным вычетом по модулю $l$, и $-1$ в противном случае. Вопрос о том, как зависит $\smb{a}{l}$ от $l$ при фиксированном $a$, является весьма важным и трудным. Великий немецкий математик К.-Ф.Гаусс...

Если пустые строки в аргументе команды \smb не запрещены (так оно и будет, если определять \smb с помощью \newcommand без звездочки), то TeX будет терпеливо ждать, когда ему встретится закрывающая фигурная скобка, парная к первой из открывающих фигурных скобок в первой строке, а пока таковой нет — рассматривать весь читаемый им текст как составную часть первого аргумента команды \smb. В конце концов TeX либо доложит, что он прочел уже весь файл, а закрывающей фигурной скобки так и не нашел, либо прервет работу, объявив, что ему не хватило памяти.




Содержание  Назад  Вперед