В режиме встроенной математики я обычно использую буквальный слэш (т.е. /
) для обозначения деления. В отличие от обычных бинарных операторов [ + - \times \div
], /
рассматривается как обычный математический объект. Это может легко привести к несогласованному (асимметричному) горизонтальному интервалу, например, когда /
ему предшествует переменная, а за ним следует функция, как в следующем примере:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\noindent
\(\tan x = \sin x / \cos x\)
\end{document}
Выход:
Конечно, я могу исправить горизонтальный интервал, превратив его \cos x
в обычный математический объект:
\(\tan x = \sin x / {\cos x}\)
Выход:
В качестве альтернативы я могу создать /
функцию как бинарный оператор, аналогичный [ + - \times \div
]:
\(\tan x = \sin x \mathbin{/} \cos x\)
Выход:
Теперь мне интересно: какой из двух вышеперечисленных обходных путей следует предпочесть? Или есть ли лучший?
решение1
Вам определенно следует предпочесть версию \sin x / {\cos x}
с маленькими пробелами, или \sin x / \!\cos x
как предлагает egreg. Из TeXbook, страница 132:
TeX не рассматривает
/
как бинарную операцию, хотя косая черта обозначает деление (которое квалифицируется как бинарная операция по математическим основаниям). Причина в том, что принтеры традиционно оставляют дополнительный пробел вокруг символов+
,−
, и*
, но не вокруг/
.
Кнут продолжает, объясняя, что 1 \mathbin{/} 2
выйдет
что неверно; поэтому TeX считает
/
это обычным символом.
И со страницы 170:
В формуле
$n/\log n$
TeX автоматически вставляет нежелательный тонкий пробел перед\log
, поскольку косая черта рассматривается как обычный символ, а тонкий пробел обычно желателен между обычным символом и таким оператором, как\log
.
решение2
В вашем случае вы используете /
бинарный оператор: \mathbin{/}
:
$a \mathbin{/} b$
В качестве сокращения можно определить команду, которая будет действовать как слэш в качестве бинарного оператора:
\mathchardef\mslash="202F
$a \mslash b$
Или символ /
можно изменить глобально, чтобы он действовал как бинарный оператор:
\mathcode`\/="202F
$a / b$
Начальный номер — это класс, 0x200 — это бинарный оператор. Последние две цифры шестнадцатеричного числа 2F
— это код символа /
.
решение3
Есть три пакета LaTeX, которые, по-видимому, могут помочь:xfrac,хорошийфракционныйи (возможно)фактор(последний я никогда не смотрел; ссылка на него есть в записи каталога nicefrac). Обратите внимание, что xfrac — это пакет, закодированный в LaTeX-3.
Возможно, ни один из этих способов не поможет, но я бы предпочел использовать проверенный пакет, чем возиться с внутренними механизмами математического режима (который обычно заставляет меня чувствовать себя немного нехорошо).