Снова об интервалах в формулах
Сейчас мы обсудим вкратце, какими правилами руководствуется TeX при расстановке интервалов в математических формулах. В стандартных ситуациях мы об этом не задумываемся, а полностью доверяем LaTeX'у. То, о чем мы будем говорить, пригодится, если мы пользуемся в формулах сложными конструкциями (например, конструируем знак двойного интеграла из двух знаков интеграла и "отрицательных пробелов", и при этом не хотим подбирать верные интервалы экспериментально.
При наборе формулы TeX рассматривает ее как состоящую из частей одного из следующих типов:
Обыкновенный символ | например, \alpha |
Бинарная операция | |
Бинарное отношение | |
Математический оператор | |
Подформула | например, {x^2} |
Знак препинания | , или ; или \colon или \ldotp |
Скобка |
Здесь подформула — это любой фрагмент формулы, заключенный в фигурные скобки. Команда \colon задает двоеточие, рассматриваемое как знак препинания (двоеточие, набранное непосредственно, рассматривается TeX'ом как знак бинарного отношения), а команда \ldotp — точку, рассматриваемую как знак препинания (точка, набранная непосредственно, рассматривается как обыкновенный символ). К бинарным отношениям (с точки зрения TeX'а) относятся также все стрелки (\стр{arrows}) и фрагменты формул, создаваемые командой \stackrel. При расстановке пробелов в формуле TeX руководствуется тем, к какому из перечисленных типов относятся ее составные части: символы бинарных операций окружаются "средними пробелами" (теми, что вручную задаются командой \:), а символы бинарных отношений — "толстыми" пробелами (вручную, как мы помним, толстый пробел задается командой \;); впрочем, в стилях для индексов и индексов к индексам (см. предыдущий раздел) эти пробелы опускаются; после знака препинания в большинстве случаев ставится "тонкий" пробел, и т.д2) Подформула (т. е. фрагмент формулы, заключенный в фигурные скобки) рассматривается TeX'ом почти так же, как обычный символ:
![]() | Сравните $2+3$ и $2{+}3$: во втором случае знак плюс является подформулой, а не символом бинарной операции. |
Кстати, с этим приемом (поставить фрагмент формулы в фигурные скобки, чтобы он рассматривался как обычный символ) мы уже сталкивались ранее, когда обсуждали, как задать в TeX'е десятичную дробь.
Мы не будем вдаваться в точные правила расстановки пробелов (они перечислены в книге [2]). Для нас сейчас важнее то, что TeX можно заставить рассматривать любой фрагмент формулы как бинарную операцию, бинарное отношение или математическую операцию: для этого надо применить команды \mathbin, \mathrel или \mathop соответственно. Вот примеры того, как работают эти команды.
Иногда возникает нужда в символе
![](../../../../img/tex/1/c/3/1c30a745208de4a905f6bb5209fb79b5.png)
![]() | Хотелось бы, чтобы в формуле $E\hat{\otimes}F$ были такие же пробелы, как и в формуле $E\otimes F$. |
![](../../../../img/tex/1/c/3/1c30a745208de4a905f6bb5209fb79b5.png)
![]() | В формуле $E\mathbin{\hat{\otimes}}F$ пробелы такие же, как и в $E\otimes F$. |
![](../../../../img/tex/1/c/3/1c30a745208de4a905f6bb5209fb79b5.png)
Типичный пример использования команды \mathop - определение имени операции, записываемой прямым шрифтом. Обозначения такого типа встречаются в математических текстах очень часто, и набора команд для них, предусмотренного LaTeX'ом , вполне может не хватить; в этом случае, чтобы получить на печати, скажем,
![](../../../../img/tex/5/3/b/53b268f14879d11f4101efa00f910ac3.png)
$\mathop{\mathrm{Ext}}\nolimits^1(E,F)$ Здесь \mathop необходимо для того, чтобы между
![](../../../../img/tex/2/0/c/20cc0fe20e3d48c4c691df6d7131e795.png)
![](../../../../img/tex/8/8/a/88a7ed79addc5bbc2b3ab6d471f7c123.png)
![]() | Сравните $\sin x$ и $\mathrm{sin}x$. |
А вот пример, когда TeX' у надо объяснить, что некоторый сложный символ есть символ математического оператора. Пусть нам понадобилась формула
![](../../../../img/tex/7/f/6/7f68a67900a32e80a07080432a8f0c7f.png)
![]() | $$ \sum'_{x\in\Gamma}f(x). $$ |
$$ \sum^\prime_{x\in\Gamma}f(x). $$ и в этой записи штрих рассматривается как предел суммирования. Не будем, однако, отчаиваться, а просто создадим новый оператор "сумма со штрихом":
$$ \mathop{{\sum}'}_{x\in\Gamma}f(x). $$ Можете проверить, что на сей раз все получается как надо. В этой записи очень существенно, что \sum взято в фигурные скобки: благодаря этому символ, генерируемый командой \sum, рассматривается TeX'ом просто как подформула, поэтому и штрих после него стоит где положено, а не там, где бывают пределы суммирования. Вся подформула "{\sum}" передается в качестве аргумента команде \mathop, благодаря чему наш новый символ "сумма со штрихом" рассматривается как математический оператор и пределы суммирования (в выключной формуле) ставятся у него, где положено.
Здесь опять разумно создать сокращенное обозначение, которое заменяло бы эту громоздкую запись.