![如何创建一个命令来插入字符串,但可能忽略命令前的空格?](https://linux22.com/image/251452/%E5%A6%82%E4%BD%95%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E5%91%BD%E4%BB%A4%E6%9D%A5%E6%8F%92%E5%85%A5%E5%AD%97%E7%AC%A6%E4%B8%B2%EF%BC%8C%E4%BD%86%E5%8F%AF%E8%83%BD%E5%BF%BD%E7%95%A5%E5%91%BD%E4%BB%A4%E5%89%8D%E7%9A%84%E7%A9%BA%E6%A0%BC%EF%BC%9F.png)
我想定义一个开关,显示某些文本(包含公式)中的附加注释。如下所示,通过将 设置showString
为true
,效果很好。但是,当我将其设置为 时false
,句号前会有一些剩余空间。我尝试使用 来“忽略”它\ignorespaces
,但 仍然包含单词“text”后面的一个空格。如何避免这种情况?
一种解决方案是在#1
in之前插入一个空格\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}}