マクロに続く文字に基づく条件

マクロに続く文字に基づく条件

基本的に、私はマクロの意味がそれに続くものによって決まるようなものを望んでいます\xspace。例えば、私がこう言うと

\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}

関連情報