
Basicamente, eu gostaria de \xspace
fazer 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 foo
e, 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
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}
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}