amsmath
определяет \dots
, что делает просмотр вперед и использует разные точки (вертикально центрированные или нет, в основном) в зависимости от следующего токена. СмотритеКак работают магические \точки в amsmath?
Однако из-за этого (по крайней мере, насколько я понимаю) это не работает, когда точкив концеформулы:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[ x + \dots + x + \dots \]
\end{document}
Теперь это не имеет большого значения при использовании, +
поскольку я могу напрямую использовать \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
.