我定义了一个命令,将星号作为幂添加到输入变量。它必须采用自适应方式,如果输入有索引,则将星号添加到主参数而不是整个输入。此外,我在文本中使用的参数也被定义为命令和 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 的正常运行。