Фантомы и прочее
Ранее мы столкнулись с командой \lefteqn, позволяющей напечатать фрагмент формулы и при этом сообщить TeX'у, что отдельного места (по горизонтали) на этот фрагмент отводить не надо. Иногда бывает полезно сделать обратное: включить в формулу символ, который сам не печатается, но место занимает. Вот пример такой ситуации.
Команда \sqrt автоматически выбирает размер знака радикала таким образом, чтобы он точно соответствовал высоте подкоренного выражения, и это очень хорошо. Иногда, однако, такой автоматический выбор приводит к не очень удачным результатам:
![]() | В формуле $\sqrt{a}+ \sqrt{d}$ два знака радикала имеют разные размеры. |
Дело тут, конечно, в том, что буквы
![](../../../../img/tex/4/e/7/4e73cf350a299140b2873d6f02b8e286.png)
![](../../../../img/tex/a/c/0/ac07c27b57ff3b343ea4097d725344be.png)
![](../../../../img/tex/4/e/7/4e73cf350a299140b2873d6f02b8e286.png)
![](../../../../img/tex/a/c/0/ac07c27b57ff3b343ea4097d725344be.png)
![]() | В формуле $\sqrt{\mathstrut a} +\sqrt{\mathstrut d}$ оба знака радикала имеют одинаковые размеры. |
Точнее говоря, \mathstrut - это невидимый символ, равный по высоте скобке
![](../../../../img/tex/5/c/6/5c604a5694e880245079350823467f1b.png)
Невидимый символ, создаваемый командой \mathstrut, является частным случаем TeX'овской конструкции "фантома". Именно, если в формуле вы напишете
"\phantom{"TeXtit{какая-то формула} "}"то результат будет такой же, как если бы эта самая "какая-то формула" была сначала напечатана по всем правилам TeX'а, а затем аккуратно стерта с бумаги. Пример:
![]() | Все мы знаем, что знак радикала выглядит так: $\sqrt{\phantom{x}}$. |
Кроме того, можно создать "вертикальный фантом" формулы (по вертикали будет оставлено столько же места, сколько занимала бы формула, по горизонтали вертикальный фантом места не занимает).
Создается вертикальный фантом командой \vphantom. В частности, команда \mathstrut - это сокращение для "\vphantom{(}" . Возможны, наконец, и горизонтальные фантомы, занимающие по горизонтали столько же места, сколько заняла бы формула, и не занимающие места по вертикали. Создаются они командой \hphantom:
![]() | На пустое место $\hphantom{\sin^2\alpha}$ можно вписать формулу вручную. |
![]() | $$ \lefteqn{\overbrace{ \phantom{1+2+3}}} 1+\underbrace{2+3+4} $$ |
![](../../../../img/tex/d/1/1/d11c534913092e025d1ff53c2895888b.png)
![](../../../../img/tex/b/0/c/b0ccd148d7d2e053d18073d2e97f1287.png)
![](../../../../img/tex/d/1/1/d11c534913092e025d1ff53c2895888b.png)
![](../../../../img/tex/d/1/1/d11c534913092e025d1ff53c2895888b.png)
Если бы формула была не выключная, а внутритекстовая, то этот трюк прошел бы не столь гладко. Дело в том, что команда \lefteqn всегда набирает формулы в \displaystyle, поэтому размер фантома, над которым ставилась скобка, мог в принципе не совпасть с размером реально печатаемого фрагмента формулы. Чтобы уж совсем себя обезопасить, следовало бы в этом случае аргумент команды \lefteqn начать с \textstyle.