Условие, основанное на символе, следующем за макросом

Условие, основанное на символе, следующем за макросом

В принципе, я хотел бы что-то вроде \xspacedoes, т.е. значение макроса должно зависеть от того, что за ним следует. Так, например, если я говорю

\mymacro a

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

Редактировать:В частности, я хочу повлиять на интервал после интеграла. Когда он стоит отдельно, интервал по умолчанию подходит. Если это первый из нескольких интегралов, интервал становится слишком широким. Вот что я слепил из предыдущего ответа:

\newcommand\timeintegral[1]{
    ∫_{t_0}^{t_1} \if ∫#1 \!\!\! \fi #1
}

Вот как это выглядит в использовании:

\timeintegral E \, dt = \timeintegral ∫_z ∫_φ f \, dφ dz dt

введите описание изображения здесь

решение1

Это простое применение \@ifnextchar:

\documentclass{article}
\usepackage{unicode-math}
\setmainfont{TeX Gyre Pagella}
\setmathfont{Asana Math}

\makeatletter
\newcommand{\timeintegral}{%
   ∫_{t_0}^{t_1} \@ifnextchar∫{\!\!\!}{}%
}
\makeatother

\begin{document}
\[
\timeintegral E \, dt = \timeintegral ∫_z ∫_φ f \,dφ\,dz\,dt
\]
\end{document}

введите описание изображения здесь

Версия LaTeX3:

\documentclass{article}
\usepackage{unicode-math}
\setmainfont{TeX Gyre Pagella}
\setmathfont{Asana Math}

\ExplSyntaxOn
\NewDocumentCommand{\timeintegral}{}
 {
  ∫\sb{t\sb{0}}^{t\sb{1}} \psirus_check_int:
 }
\cs_new_protected:Npn \psirus_check_int:
 {
  \peek_charcode_ignore_spaces:NT ∫ { \!\!\! }
 }
\ExplSyntaxOff

\begin{document}
\[
\timeintegral E \, dt = \timeintegral ∫_z ∫_φ f \,dφ\,dz\,dt
\]
\end{document}

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