Так...
Да, я ошибся в том, что пробелы всё-таки остались, их надо
окончательно удалить, пробелы перед знаками процента,
и вот теперь всё в порядке.
Итак,
полезный урок на будущее – знак
процента в конце строки, написанный непосредственно после
последнего символа, который в этой строке
есть, убивает пробел, который перенос строки создает.
Так, ну, у команд, которые LaTeX
знает, существует обязательные аргументы и необязательные.
Мы пока научились создавать команду
с одним обязательным аргументом. Инструментарий
\newcommand позволяет создавать команды более сложные,
чем те, которые мы сейчас сделали.
В частности, в них может быть любое количество обязательных аргументов.
Ну, любое, там, мне кажется, там есть ограничения -
не больше девяти, больше вам вряд ли понадобится.
А вот необязательных может быть только один.
Причем, девять аргументов максимум, из них
один, только один, самое наибольшее, необязательный.
Это ограничения, которые есть у инструментария \newcommand.
Вы можете воспользоваться другими пакетами, которые
позволяют создавать более продвинутые команды и указывать
в них любое количество аргументов, как обязательных,
так и нет, в любом порядке,
и настраивать их самыми изощренными образами.
В материалах этой лекции вы найдете краткое пояснение о том, с
помощью каких пакетов это делается и где можно почитать об этом подробнее.
Но сейчас давайте с помощью того
же самого инструментария \newcommand создадим
простую команду с одним обязательным аргументом и одним необязательным.
Я пишу снова \newcommand, название,
ну какое-нибудь произвольное название - \qwerty. Вы можете подбирать его так,
чтобы вам было легко запомнить, что оно означает.
Так, в аргументе...
втором обязательном аргументе команды \newcommand, должно быть описание того, что эта
команда делает. Но я хочу, чтобы у этой команды были аргументы.
Поэтому... У команды \qwerty, новой команды, были аргументы.
Поэтому между двумя обязательными аргументами
команды \newcommand я напишу следующее.
Во-первых, цифру 2 в квадратных скобках –
это означает, что всего аргументов будет два.
Мы уже делали очень похожую вещь, когда делали команду \str.
Там была цифра 1 – это означает, что всего один аргумент.
В моей новой команде \qwerty будет два аргумента.
И я хочу, чтобы один из них стал необязательным.
Правило команды \newcommand заключается в том, что это должен быть аргумент номер 1.
То есть если обязательные аргументы...
необязательные аргументы есть, то это только аргумент номер 1.
Все остальные точно будут обязательными.
Чтобы указать LaTeX на то, что у меня будет первый
необязательный аргумент, мне нужно указать здесь еще кое-что в квадратных скобках -
прямо рядом с этой двойкой открыть еще одни квадратные скобки и
написать там, чему должно быть равно значение первого аргумента по умолчанию.
Поскольку этот аргумент необязательный, то пользователь вполне может
не сообщить ничего в качестве значения этого аргумента.
Тогда LaTeX должен знать, что туда подставлять, и
мне нужно написать здесь какое-то значение по умолчанию.
Давайте я напишу здесь, что это будет просто X.
Буква, просто буква «X».
То есть если пользователь не сообщил значение первого
аргумента, то нужно подставить букву «X» вместо этого значения.
Я мог здесь ничего не писать, тогда
значение по умолчанию было бы пустым.
Так, что я хочу, чтобы эта команда делала?
Я хочу, чтобы эта команда, во-первых, переходила в окружение equation,
во-вторых, внутри
этого окружения equation писала мне, что
то, что сообщено в виде первого аргумента, находится в
нестрогом предпочтении к тому, что сообщено в виде второго аргумента.
То есть я напишу здесь #1
в значении первого аргумента, который необязательный.
Потом эту созданную мной команду \nw, которая делает
такой красивый значок с закругленными
краями, а потом значение второго аргумента.
Так.
Что мне стоит ждать от деятельности этой команды?
Если я сообщу оба аргумента команде \qwerty, то она напишет
мне, что первый аргумент находится в нестрогом предпочтении ко второму.
Если...
если я не сообщу ей значение первого аргумента,
то она напишет букву «X» вместо первого аргумента.
Давайте воспользуемся этой командой.
Я напишу сейчас здесь \qwerty и сообщу оба аргумента для начала.
Первый аргумент пусть будет Z,
он необязательный, поэтому в квадратных скобках,
второй аргумент обязательный, поэтому в фигурных, во втором аргументе – Y.
То есть сейчас я ожидаю, что эта команда
напишет «Z не хуже Y». Это и произошло.
Если вы посмотрите на результат, то написано: «Z не хуже Y».
Что произойдет, если я не буду сообщать необязательный аргумент?
То есть напишу просто \qwerty[Y]?
Ну, то, чего стоит ожидать – это то, что вместо необязательного аргумента
LaTeX подставит значение, которое я сообщил при создании команды по умолчанию.
Ну и действительно – теперь «X не хуже Y».
Так, ну и последнее, что мы рассмотрим в рамках
создания новых команд – это переопределение старых команд под себя.
Существует...
способ сделать так, чтобы команды, которые уже кем-то определены: или вами,
так как я определил сейчас несколько команд, или LaTeX,
отображались, ну, вернее, делали что-то, что они до этого не делали.
Скажем, я могу сейчас переопределить - для этого существует \renewcommand,
такая команда - я могу переопределить команду, которая ставит знак
больше либо равно.
Если вы внимательно прошли материалы первой недели
нашего курса, то вы знаете, что
больше либо равно – это знак, который ставится командой \ge – greater or equal.
Но этот знак...
по умолчанию LaTeX ставится не совсем
так, как принято в русской математической традиции.
Потому что в хорошо изданных русскоязычных
книжках по математике в знаке больше либо равно
равно нижняя черточка, которая отвечает за равенство,
параллельна нижней черточке, которая отвечает за неравенство.
А в западной традиции, которой по
умолчанию придерживается LaTeX, эта нижняя черточка горизонтальна.
Так вот, если я хочу, чтобы знак больше либо равно был красивым - такой,
какой принят в русскоязычной типографской традиции, - то я могу сделать следующее:
я могу переопределить команду больше либо равно, и в качестве того, что
она делает, сказать, чтобы она ставила
тот самый значок другого вида, который...
в котором нижняя черточка параллельна той черточке, которая над ней.
Ну и давайте сравним. Я попробую до и
после \renewcommand написать одно и то же.
А именно, что «x \ge y».
Я написал это один раз до \renewcommand, и второй раз - после \renewcommand.
Результаты должны отличаться.
Действительно, вы видите, что после переопределения
команды вид знака больше либо равно изменился.
Я могу один раз написать это \renewcommand
в преамбуле и после этого забыть об этом.
То есть всегда использовать обычную команду \ge для символа
больше либо равно, и будет правильный красивый знак.
На последней неделе, когда мы будем обсуждать особенности
работы с русским языком в LaTeX, мы
введем еще много таких обозначений, которые кое-что меняют в математике так,
чтобы это соответствовало русской типографской традиции.