Определите звезду «*» - чтобы стать точкой

Sep 23 2020

Можно ли при записи в математическом режиме указать *, чтобы он стал \ cdot в основном документе?

Поскольку это упрощает при написании уравнений сделать звезду.

Ответы

31 DavidCarlisle Sep 23 2020 at 11:02

\documentclass{article}

% \DeclareMathSymbol{\cdot}{\mathbin}{symbols}{"01} % from fontmath.ltx
\DeclareMathSymbol{*}{\mathbin}{symbols}{"01}
\begin{document}

$ x * y $

\end{document}
18 DonaldArseneau Sep 23 2020 at 11:01

Или

\mathcode`\*=\number\cdot

или же

\mathcode`\*=\number\circ

или же

\mathcode`\*=\number\bullet

(На \numberсамом деле это не обязательно, но может помочь для нестандартных версий \circили \cdotили \bullet.)

9 StevenB.Segletes Sep 23 2020 at 11:30

Как я указал в комментарии, * неправильное переопределение использования не позволит вам использовать звездные версии макросов математического режима (см. Частичный список ниже *). Например, делать *активным было бы неправильно. Однако Дэвид К. и Дон отмечают, что их подходы не страдают этой проблемой, и я проявил халатность, не заметив различия.

Хотя использование звездообразных макросов в математическом режиме может быть редкостью, это происходит достаточно часто, чтобы оправдать отказ от подхода, который использовал бы актив *. Даже если вы воспользуетесь подходом Дэвида, вы потеряете возможность использовать наборную звездочку в математическом режиме, если не сохраните ее заранее в именованный макрос.

Альтернативой, которая никоим образом не мешает, *было бы переопределение \*. Это простой текстовый макрос, известный как «дискреционный знак умножения». Я никогда не использовал его сам, но идея в том, что вы можете поместить его между умноженными математическими терминами. Обычно он ничего не делает, но если разрыв строки должен произойти между двумя терминами, в \timesконце строки (в размере текста) вставляется символ (эквивалент ). Он действует как математический дефис, но \timesвместо него -. Если вы, как и я, никогда не будете использовать такую ​​конструкцию, то, думаю, будет безопаснее переопределить \*, чем *.

\documentclass{article}
\renewcommand\*{\cdot}
\begin{document}
$ x \* y $
\end{document}

* Примеры звездных макросов включают такие вещи , как \tag*, \ref*, \\*, \matrix*(и все его варианты), \operatorname*, \alignat*, просто , чтобы начать.

4 SergeiGolovan Sep 23 2020 at 11:31

Версия для полноты unicode-math:

\documentclass{article}
\usepackage{unicode-math}
\AtBeginDocument{\Umathcode`\* = 2 0 "22C5}
\begin{document}
$x*y$
\end{document}