
Básicamente, me gustaría algo como \xspace
Does, 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
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}
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}