指数的自适应数学新命令

指数的自适应数学新命令

我定义了一个命令,将星号作为幂添加到输入变量。它必须采用自适应方式,如果输入有索引,则将星号添加到主参数而不是整个输入。此外,我在文本中使用的参数也被定义为命令和 require xspace。但是,使用 xspace 会破坏编译。以下是在 overleaf 上运行的代码片段:

\documentclass{article}
%\usepackage{xspace}
\usepackage{xstring}
\newcommand{\lien}{\ensuremath{E}\xspace}
\newcommand{\ih}{\ensuremath{I_{h}}\xspace} 
\newcommand{\atref}[1]{%
  \IfSubStr{#1}{_}{%
  \ensuremath{\StrBefore{#1}{_}_{\StrBehind{#1}{_}}^*}\xspace%
  }{\ensuremath{{#1}^*}\xspace %
  }
}

\begin{document}

\atref{\lien} and \atref{\ih} some more text.

\end{document}

如上所述,添加即可\usepackage{xspace}将其杀死。

答案1

我已经知道问题出在哪里,但不知道如何解决。

我制作了另一个简单的代码来检查:

\documentclass{article}
\newcommand{\cur}{\ensuremath{I}}
%\newcommand{\cur}{\ensuremath{I}\xspace}

\newcommand{\tess}[1]{\IfSubStr{#1}{I}{true}{false}\xspace}

\begin{document}
This is to check the command \tess{\cur}.
\end{document}

第一种定义命令 \cur 的方法(不带 \xspace)在 overleaf 中可以正常工作,并且可以编译。但是,添加 xspace(第二种版本)会破坏代码。也许在 \tess{} 内部调用 \cur 时(带 xspace),它无法决定是否必须添加空格,从而导致问题。

如果有人能帮助解决这个问题就太好了,因为我需要 \cur 和 xspace 的正常运行。

相关内容