Контекстно-зависимые точки в конце формул

Контекстно-зависимые точки в конце формул

amsmathопределяет \dots, что делает просмотр вперед и использует разные точки (вертикально центрированные или нет, в основном) в зависимости от следующего токена. СмотритеКак работают магические \точки в amsmath?

Однако из-за этого (по крайней мере, насколько я понимаю) это не работает, когда точкив концеформулы:

\documentclass{article}
\usepackage{amsmath}
\begin{document}

\[ x + \dots + x + \dots \]

\end{document}

mwe.jpg

Теперь это не имеет большого значения при использовании, +поскольку я могу напрямую использовать \dotsb. Однако пользовательские команды также могут быть сделаны "с учетом точек":

\documentclass{article}
\usepackage{amsmath}
\begin{document}

\newcommand*\myop{\DOTSB\rightarrow}

\[ x \myop \dots \myop x \myop \dots \]

\end{document}

В этом случае я хотел бы, чтобы последний \dotsавтоматически подстраивался в зависимости от определения \myop. Как это можно сделать?

Я не ожидаю, что обязательно \dots«вспомню», что было раньше (хотя это было бы неплохо), было бы нормально дать на это какую-то подсказку, повторив оператор после точек:

\[ x \myop \dots \myop x \myop \dots \hint\myop \]

EDIT: или даже лучше:

\[ x \myop \dots \myop x \myop \dotsfor{\myop} \]

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

решение1

Это, кажется, не объясняется ни в одной доступной документации, но есть являетсяобъяснение врадость текса(руководство для ams-tex), где впервые были определены вариации точек. со стр. 156:

Таким образом, когда вы используете \dotsв математическом режиме, конкретный вид точек, которые нужно набрать, определяется как стилем, так и следующим символом в формуле. К сожалению, есть одна ситуация, когда эта схема не работает, а именно, когда есть не являетсялюбой следующий символ. Если вы набираете [примеры, показанные \dotsв конце формулы], то \dotsнельзя ожидать, что он будет знать, какие типы точек вам нужны — он может только смотреть вперед и не может узнать, какой символ был набран до него — и \dotsпросто выбирает \dotso во всех этих случаях. Поэтому, когда формула заканчивается точками, правильным решением будет указать AMS-TeX, какие типы точек он должен использовать.

Во время создания ams-tex эта проблема тщательно продумывалась, а пограничные случаи были слишком непредсказуемы, чтобы их учитывать.

Я думаю, что подход с двумя макросами — это лучший вариант: \myopи \myopdots(или другое, возможно, более короткое название для второго); его легко найти в файле, если вам нужно будет что-то изменить.

редактировать:как указал @Zarko в комментарии, \dotsm(для «точек умножения») будет уместно, как и \dotsb(«точки с бинарными операторами/отношениями»). оба разрешаются в \cdots.

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