我怎样才能让变量/宏内的所有内容都位于同一行?

我怎样才能让变量/宏内的所有内容都位于同一行?

我知道有各种技巧可以让事情保持一致。我有一个双字变量输入。例如,设置应用程序

假设有一组应用程序,我希望它们始终具有相同的格式。

我可以用不同的方法来解决此问题。最直接的解决方案是手动编写每个代码:

\textit{Settings~App}

这不是一个好的解决方案,因为我无法区分其他 \textit{} 文本和 \textit{} 应用文本。

所以,我把它放入变量/宏中。

\newcommand\app[1]{\textit{#1}}
\app{Settings App}

或 LaTeX3 语法

\usepackage{xparse}
\NewDocumentCommand{\app}{m}{\textit{#1}}
\app{Settings App}

问题是,其他正在写文本的人可能会忘记波浪号。结果就是无法确保空格不可换行,也无法轻松搜索到某个应用名称的出现位置。

所以,我的问题是,我是否可以在上面的宏定义中添加一些内容,以确保非换行空间没有明确的波浪号?

答案1

例如,您可以使用其中一个水平框,\mbox因为它不允许换行。有关水平框的更多示例,请参阅@egreg 的回答这里。虽然\mbox可以防止换行,但它会产生不随文本其余部分拉伸或收缩的副作用,请参阅@egreg 的答案这里寻找解决该问题的方法。

因此,“快速、简单的修复”方法如下:

\newcommand\app[1]{\mbox{\textit{#1}}}
\app{Settings App}

或者

\usepackage{xparse}
\NewDocumentCommand{\app}{m}{\mbox{\textit{#1}}}
\app{Settings App}

相关内容