- •Операции с пределами и без
- •Переносы в формулах
- •Альтернативные обозначения для математических формул
- •Набор матриц
- •Фантомы и прочее
- •Снова об интервалах в формулах
- •Вертикальные отбивки вокруг выключных формул
- •Горизонтальные отбивки вокруг формул
- •Промежутки между предложениями
- •Установка промежутков вручную
- •Подробности о шрифтах
- •"Старые" команды изменения шрифта
- •Борьба с переносами
- •Ручное управление разрывами строк
- •Абзацы без выравнивания и переносов
- •Более тонкая настройка
- •Борьба с последней строкой.
Фантомы и прочее
Ранее мы столкнулись с командой \lefteqn, позволяющей напечатать фрагмент формулы и при этом сообщить TeX'у, что отдельного места (по горизонтали) на этот фрагмент отводить не надо. Иногда бывает полезно сделать обратное: включить в формулу символ, который сам не печатается, но место занимает. Вот пример такой ситуации.
Команда \sqrt автоматически выбирает размер знака радикала таким образом, чтобы он точно соответствовал высоте подкоренного выражения, и это очень хорошо. Иногда, однако, такой автоматический выбор приводит к не очень удачным результатам:
|
В формуле $\sqrt{a}+ \sqrt{d}$ два знака радикала имеют разные размеры. |
Дело
тут, конечно, в том, что буквы
и
имеют
разную высоту. Чтобы сделать знаки
радикала одинаковыми, TeX надо обмануть:
добавить в подкоренные выражения по
символу, который чуть выше, чем
или
,
чтобы подкоренные выражения оказались
одной высоты. Этот символ, естественно,
не должен печататься и не должен занимать
места по горизонтали (лишние пробелы
под корнем нам тоже ни к чему). Такой
невидимый символ генерируется TeX'овской
командой \mathstrut:
|
В формуле $\sqrt{\mathstrut a} +\sqrt{\mathstrut d}$ оба знака радикала имеют одинаковые размеры. |
Точнее говоря, \mathstrut - это невидимый символ, равный по высоте скобке и не имеющий ширины.
Невидимый символ, создаваемый командой \mathstrut, является частным случаем TeX'овской конструкции "фантома". Именно, если в формуле вы напишете
"\phantom{"TeXtit{какая-то формула} "}"
то результат будет такой же, как если бы эта самая "какая-то формула" была сначала напечатана по всем правилам TeX'а, а затем аккуратно стерта с бумаги. Пример:
|
Все мы знаем, что знак радикала выглядит так: $\sqrt{\phantom{x}}$. |
Кроме того, можно создать "вертикальный фантом" формулы (по вертикали будет оставлено столько же места, сколько занимала бы формула, по горизонтали вертикальный фантом места не занимает). Создается вертикальный фантом командой \vphantom. В частности, команда \mathstrut - это сокращение для "\vphantom{(}" . Возможны, наконец, и горизонтальные фантомы, занимающие по горизонтали столько же места, сколько заняла бы формула, и не занимающие места по вертикали. Создаются они командой \hphantom:
|
На пустое место $\hphantom{\sin^2\alpha}$ можно вписать формулу вручную. |
Для полноты картины скажем об еще одной экзотической команде, называемой \smash. Подобно команде \lefteqn, она печатает символ, но при этом говорит TeX'у, что он не занимает места по вертикали. С помощью этой команды (а так же с помощью \lefteqn) можно накладывать в формулах один символ на другой. Вот пример совместной работы команд \phantom и \lefteqn:
|
$$ \lefteqn{\overbrace{ \phantom{1+2+3}}} 1+\underbrace{2+3+4} $$ |
Поясним,
как устроен исходный текст, давший такое
перекрытие скобок. Верхняя фигурная
скобка, созданная командой \overbrace,
ставится не над самой формулой
,
а над ее фантомом. В результате команда
\overbrace
печатает фигурную скобку над пустым
местом. Далее, вся эта конструкция стоит,
в свою очередь, в аргументе команды
\lefteqn,
вследствие чего TeX считает, что места
по горизонтали она не занимает. Поэтому
формула
начинается
с того же места, что и фантом формулы
;
в результате
попадает
аккурат под верхнюю скобку! Все это,
конечно, — еще один пример "грязного
трюка").
Если бы формула была не выключная, а внутритекстовая, то этот трюк прошел бы не столь гладко. Дело в том, что команда \lefteqn всегда набирает формулы в \displaystyle, поэтому размер фантома, над которым ставилась скобка, мог в принципе не совпасть с размером реально печатаемого фрагмента формулы. Чтобы уж совсем себя обезопасить, следовало бы в этом случае аргумент команды \lefteqn начать с \textstyle.
