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



         

Команда \newcommand со звездочкой - часть 2


Если же мы определим \smb с помощью \newcommand*, написав

\newcommand*{\smb}[2]{\left(\frac{#1}{#2}\right)}

то ошибка не пойдет дальше текущего абзаца: как только TeX увидит пустую строку среди текста, рассматриваемого им как аргумент команды, он тут же прервет дальнейшее чтение и выдаст следующее стандартное сообщение об ошибке:

Runaway argument? {a{l}$, где$a$ не делится на $l$, равен п\ETC. ! Paragraph ended before \smb was complete. <to be read again> \par l.8 ?

Нажав пару раз на "ввод", мы сможем благополучно продолжить обработку текста. В первом абзаце пропадет все после слов "Символ Лежандра", зато второй и последующие абзацы будут обработаны нормально (пока TeX не наткнется на очередную ошибку...).

Команды \newcommand и \renewcommand* обладают еще одним преимуществом перед своими вариантами без звездочек: при их использовании происходит (небольшая) экономия памяти.

Рекомендуем вам определять и переопределять команды с аргументами при помощи \newcommand* и \renewcommand*. Варианты без звездочек используйте только тогда, когда вы действительно намерены подставлять в аргумент своего макроса текст, состоящий из нескольких абзацев.




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