Condicional com base no caractere seguindo a macro

Condicional com base no caractere seguindo a macro

Basicamente, eu gostaria de \xspacefazer algo parecido, ou seja, o significado da macro deve depender do que a segue. Então, por exemplo, se eu disser

\mymacro a

ele pode se expandir para fooe, se qualquer outro caractere estiver seguindo, ele deve se expandir para bar. No meu caso específico, tentarei corresponder um caractere Unicode, se isso fizer diferença.

Editar:Especificamente, quero influenciar o espaçamento após uma integral. Quando isolado, o espaçamento padrão é adequado. Se for a primeira de integrais múltiplas, o espaço tornou-se demasiado amplo. Aqui está o que eu juntei da resposta anterior:

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

É assim que parece em uso:

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

insira a descrição da imagem aqui

Responder1

Esta é uma aplicação direta de \@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}

insira a descrição da imagem aqui

A versão 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}

informação relacionada