如何创建一个命令来插入字符串,但可能忽略命令前的空格?

如何创建一个命令来插入字符串,但可能忽略命令前的空格?

我想定义一个开关,显示某些文本(包含公式)中的附加注释。如下所示,通过将 设置showStringtrue,效果很好。但是,当我将其设置为 时false,句号前会有一些剩余空间。我尝试使用 来“忽略”它\ignorespaces,但 仍然包含单词“text”后面的一个空格。如何避免这种情况?

一种解决方案是在#1in之前插入一个空格\mystring,并在示例中使用“This is just some text\mystring{here}”(从而删除命令前的空格)。有没有更优雅的解决方案?

\documentclass{scrartcl}

\usepackage[T1]{fontenc}
\usepackage[american,ngerman]{babel}
\usepackage{ifthen}
\usepackage{amsmath}

\newboolean{showString}
\setboolean{showString}{false}% use true/false
\newcommand*{\mystring}[1]{\ifthenelse{\boolean{showString}}{\text{\bfseries #1}}{\ignorespaces}}

\begin{document}
This is just some text \mystring{here}.

\begin{align*}
  a=b\tag*{\mystring{here}}
\end{align*}
\end{document}

答案1

我建议

\newcommand*{\mystring}[1]{%
  \ifthenelse{\boolean{showString}}{\text{\bfseries #1}}{\ifhmode\unskip\fi}}

相关内容