避免在公式中使用大量 \text{} 命令

避免在公式中使用大量 \text{} 命令

我正在输入一份包含大量公式的文档,这些公式中都有单词。我知道我可以使用\text{}AMS 包中的功能使单词在公式中正常显示,但我想知道当同一个公式中有很多单词时,是否有一种不那么麻烦的方法来实现这一点。有没有办法将公式中的所有字符设置为正常显示,或者有没有一些不那么麻烦的方法来实现这一点?

例子:

$\sigma_{\text{type}=\text{'single'} \, \text{AND} \, \text{price} < 20}(\text{Room})$

答案1

基于此回答,这里我们使用*而不是<在数学模式中经常使用的。

只需在数学模式中添加您的文本*text*,如果您想*在数学模式之外使用字符,您可以通过恢复组内的代码号来完成。

平均能量损失

\documentclass{article}
\usepackage{amsmath}

\catcode`\*=13
\begingroup
\lccode`\~=`\*
\lowercase{\endgroup
  \def~#1*}{\text{#1}}

\begin{document}

$\sigma_{*type*=*'single'* \, *AND* \, *price* < 20}(*Room*)$

{\catcode`\*=12 text*} 

$\sigma_{*type*=*'single'* \, *AND* \, *price* < 20}(*Room*)$

\end{document}    

更新

感谢@egreg 建议替换\catcode为,以避免每次在数学模式之外\mathcode更改代码号*

\documentclass{article}
\usepackage{amsmath}

\mathcode`*="8000
\begingroup
\lccode`\~=`\*
\lowercase{\endgroup
  \def~#1*}{\text{#1}}

\begin{document}

$\sigma_{*type*=*'single'* \, *AND* \, *price* < 20}(*Room*)$

text* 

$\sigma_{*type*=*'single'* \, *AND* \, *price* < 20}(*Room*)$

\end{document}   

输出

在此处输入图片描述

答案2

您可以通过 \newcommand(或 \renewcommand,如果存在)创建新命令来制作文本下标。我认为类似的东西\newcommand{\pippo}[1]{{}_\text{#1}}可以工作。(我现在无法尝试,抱歉)

答案3

有些内容在文本和数学模式下看起来相同(或几乎相同),因此对于此示例,您可以简单地使用

$\sigma_{\text{type = `single' AND price $<$ 20}}$(Room)

全部文本

或者

$\sigma_{\text{type$\strut =\strut$`single' AND price$\strut <20$}}$(Room)

数学模式分离

相关内容