Condicional basado en el carácter que sigue a la macro.

Condicional basado en el carácter que sigue a la macro.

Básicamente, me gustaría algo como \xspaceDoes, es decir, el significado de la macro debería depender de lo que le sigue. Así por ejemplo si digo

\mymacro a

podría expandirse a foo, y si le sigue algún otro carácter, debería expandirse a bar. En mi caso específico, intentaré hacer coincidir un carácter Unicode, si eso hace la diferencia.

Editar:Específicamente, quiero influir en el espaciado después de una integral. Cuando está solo, el espaciado predeterminado está bien. Si es la primera de múltiples integrales, el espacio se volvió demasiado amplio. Esto es lo que improvisé a partir de la respuesta anterior:

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

Así es como se ve en uso:

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

ingrese la descripción de la imagen aquí

Respuesta1

Esta es una aplicación sencilla 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}

ingrese la descripción de la imagen aquí

La versión 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}

información relacionada