基於巨集後面的字元的條件

基於巨集後面的字元的條件

基本上,我想要類似的東西\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}

相關內容