Об использовании косой черты для обозначения деления в математическом режиме

Об использовании косой черты для обозначения деления в математическом режиме

В режиме встроенной математики я обычно использую буквальный слэш (т.е. /) для обозначения деления. В отличие от обычных бинарных операторов [ + - \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.

Возможно, ни один из этих способов не поможет, но я бы предпочел использовать проверенный пакет, чем возиться с внутренними механизмами математического режима (который обычно заставляет меня чувствовать себя немного нехорошо).

Связанный контент