如何在数学模式下显示直立字母而无需手动创建空间?

如何在数学模式下显示直立字母而无需手动创建空间?
\documentclass[11pt,a4paper]{article}
\title{Title}
\author{Author}
\begin{document}
\maketitle
$\{ n \mid n\ \mbox{is\ even} \}$

\end{document}

由于我很少在数学模式下显示直立字母,所以我很长一段时间都忽略了这个问题。但最近,当我准备辅导笔记时,我发现手动创建空格很烦人。因此我想知道有什么办法吗?

我还想知道是否可以在数学模式下不使用诸如“\mbox”或“\textup”之类的命令来显示直立字母?

答案1

您有多种选择。前面的注释:\mathrm不在您的选择之列,因为您必须手动插入单词间空格标记。(另外:我还会在左花括号之后和右花括号之前插入细空格指令。)

  • “基本 LaTeX”:\mbox

    $\{\, n \mid n \mbox{ is even} \,\}$
    
  • 加载包后amsmath\text

    $\{\, n \mid \text{$n$ is even} \,\}$
    

    请注意,第二个n是论点的一部分,\text因为短语“n 是偶数”是一个句法单位。“n”应该以数学斜体呈现这一事实从属于句法关注。

  • 其他注意事项。\mbox\text宏以对“周围”文本材料有效的字体样式呈现​​其参数。通常,“周围”样式将是普通或直立字母模式。但是,如果表达式 ${\, n \mid \text{$n$ is even} \,}$ 出现在定理类环境中,该环境通常会以斜体呈现普通文本,则\mbox和的参数\text也将设置为斜体。如果这不是您想要的,您应该写

    $\{\, n \mid \textnormal{$n$ is even} \,\}$
    

或者

    $\{\, n \mid \textup{$n$ is even} \,\}$
  • \mbox以下示例检查由、\text\textrm\textnormal和生成的输出\textup以包含子句$n$ is even。请注意,根据数学内容周围材料的字体样式,这五个宏可能会产生不同的结果。

    唯一可以“保证”该条款始终使用直立衬线(“罗马”)字符排版的万无一失的方法是使用复合命令\textrm{\textup{...}}。但是,根据文档中有效的字体设置,使用复合命令不一定是最佳选择。例如,在beamer使用无衬线字体显示文本和数学材料的文档中,使用复合命令是不正确的。

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath,array}
\setlength\parindent{0pt} % just for this example
\newcommand{\myexample}{\par
   $\begin{array}{@{}l >{$\upshape}l<{$}}
   \{\, n \mid n \mbox{ is even} \,\}        & {\ttfamily \string\mbox}\\
   \{\, n \mid \text{$n$ is even} \,\}       & {\ttfamily \string\text}\\
   \{\, n \mid \textrm{$n$ is even} \,\}     & {\ttfamily \string\textrm}\\
   \{\, n \mid \textnormal{$n$ is even} \,\} & {\ttfamily \string\textnormal}\\
   \{\, n \mid \textup{$n$ is even} \,\}     & {\ttfamily \string\textup}\\
   \{\, n \mid \textup{\textrm{$n$ is even}} \,\}     & {\ttfamily \string\textup/\string\textrm\ combined}\\
   \end{array}$}

\begin{document}

Surrounding text mode: ``normal,'' i.e., upright/serif
\myexample

\bigskip
{\itshape Surrounding text mode italics \myexample}

\bigskip
{\sffamily Surrounding text mode sans-serif/upright\myexample}

\bigskip
{\renewcommand\familydefault\sfdefault 
Surrounding text mode: ``normal text mode'' reset to sans-serif, but current text mode is serif\slash upright 
\myexample}

\bigskip
{\renewcommand\familydefault\sfdefault 
\sffamily\itshape
Surrounding text mode: ``normal text mode'' reset to sans-serif, current text mode is sans-serif\slash italic
\myexample}

\end{document}

相关内容