$a \text{\quad text\quad} b$
和之间有什么区别吗 $a \quad \text{text} \quad b$
?如下图所示,我看不出区别。
如果没有区别,为了最佳实践我应该使用哪一个?
\documentclass[preview,border=12pt,varwidth]{standalone}
\usepackage{amsmath}
\begin{document}
$a \text{\quad text\quad} b$\\
$a \quad \text{text} \quad b$
\end{document}
我想在解决时使用它$(x-a)(x-b)=0$
。解决方案通常写成gather*
如下形式
\begin{gather*}
(x-a)(x-b)=0\\
x-a=0 \quad\text{or}\quad x-b=0\\
x=a \quad\text{or}\quad x=b
\end{gather*}
或者
\begin{gather*}
(x-a)(x-b)=0\\
x-a=0 \text{\quad or\quad} x-b=0\\
x=a \text{\quad or\quad} x=b
\end{gather*}
答案1
在正常情况下,就空间大小而言,使用\quad
inside 或 outside会产生相同的结果。我暂时不考虑在下标/上标中使用时会发生什么。\text
\text
TeX 维护二在排版数学公式时使用当前字体:它会记住公式开始前的当前字体,并记录当前的数学系列,以便使用与当前系列相对应的字体排版类型为 7 的数学符号。请注意,当前数学系列仅保存为数字;只有当公式完成并转换为水平列表时,此数字才会变成真正的字体。
\quad
当在公式中找到诸如这样的指令时,它\hskip1em
会像往常一样扩展为,并通过检查当前字体的 fontdimen 6 参数将 em 转换为长度文本字体,因此是上面提到的第一个。如果\mskip18mu
使用,则将使用附加到数学系列 2 的字体的 em;但事实并非如此。
\text{text}
在数学模式下处理时,TeX 会(以组的形式)执行
\mathchoice
{\textdef@\displaystyle\f@size{text}}%
{\textdef@\textstyle\f@size{\firstchoice@false #1}}%
{\textdef@\textstyle\sf@size{\firstchoice@false #1}}%
{\textdef@\textstyle \ssf@size{\firstchoice@false #1}}%
我们感兴趣的是 的第一个和第二个参数\mathchoice
。该\firstchoice@false
命令只是为了避免多次执行诸如\label
或\stepcounter
之类的命令,因为这些命令可能会偷偷将 的参数带入\text
,但这与当前的问题无关。
为了简单起见,我们假设我们在\displaystyle
(但因为\textstyle
这样会是一样的)。TeX 排版了四个框,但只使用由
\textdef@\displaystyle\f@size{text}
这变成了
\hbox{{\everymath{\displaystyle}\let\f@size\f@size\selectfont text}}
我们必须记住\f@size
,\sf@size
并\ssf@size
扩展到 LaTeX 确定为当前整体字体大小的字体大小(当大小为\normalsize
10pt 文档时,它们是 10pt、7pt、5pt;当大小为\normalsize
12pt 文档或\large
10pt 文档时,它们是 12pt、8pt、6pt;等等)。在这种情况下,\let
什么也不做,但\selectfont
确实很重要!
它有什么作用?它根据\f@encoding
、\f@family
、\f@series
、\f@shape
和的当前值重置当前文本字体。在这种情况下,由于未改变,\f@size
因此外部当前的字体将保留在其内部。\f@baselineskip
\f@size
\text
总之,其\quad
内部宽度\text
与外部宽度相同。
如果\text
在第一级下标中使用,则只会\f@size
发生变化,变得与之前相同\sf@size
,因此\quad
会使用当前文本字体对应的宽度,但在\sf@size
。
当然,使用\quad
outside\text
还有另一个区别: 的参数\text
排版在一个框中,因此如果公式是内联的,则此粘连不能用作断点。(这是 David Carlisle 指出的。)
为什么 Przemysław Scherwentke 的例子给出了不同的四边形?当我们这样做时
\font\meta=logo10 at 20pt \meta
我们正在覆盖 NFSS 字体选择的基础结构:\meta
将成为当前文本字体,但宏的值\f@...
是不是改变。因此对于四边形
\meta $a \quad\text{META}\quad b$
对应的值\meta
被使用(它是当前文本字体)。相反,在
\meta $a \text{\quad META\quad} b$
1em 的确定发生后 \selectfont
,因此字体将重置为原来的前指令\meta
,因为\f@...
发出时宏未更新\meta
。实际上,“META” 是使用当前文本字体排版的,而不是使用徽标字体。
这是一个测试。
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\font\meta=logo10 at 14.4pt
{\meta $a \quad\text{META}\quad b$}
{\meta $a \quad\mbox{META}\quad b$}
{\meta $a \text{\quad META\quad} b$}
{\meta $a \quad\text{META}\quad b$}
\newcommand{\goodmeta}{%
\fontencoding{U}%
\fontfamily{logo}%
\fontsize{14.4}{14.4}%
\selectfont}
{\goodmeta $a \quad\text{META}\quad b$}
{\goodmeta $a \quad\mbox{META}\quad b$}
{\goodmeta $a \text{\quad META\quad} b$}
{\goodmeta $a \quad\text{META}\quad b$}
\end{document}
可以看到,在第 1、3 和 4 行中,“META”一词是用 Computer Modern 排版的,而在第 2 行中它使用字体logo
(因为\mbox
使用当前字体而不发出任何\selectfont
命令)。
在其他情况下,\goodmeta
使用 ,结果是相同的。
答案2
在 LaTeX 中,宏的定义\quad
(在 中说明latex.ltx
)为:
\def\quad{\hskip1em\relax}
请注意,宏在文本和数学模式下的工作方式相同。(宏\hskip
和\relax
是 TeX“原始”命令。)
因此,只要 1em
在文本和数学模式下具有相同的值——如果您对数学和文本使用通用字体系列和字体大小(幸运的是,您发布的 MWE 就是这种情况)——您可以使用任一变体并获得相同的输出。因此,您可以随意使用对您来说最自然的变体。对我来说,\quad\text{or}\quad
似乎比……更自然一点\text{\quad or\quad}
。
附录:正如@PrzemysławScherwentl 在另一个答案中所证明的那样,它是可能的比如,通过使用 PlainTeX 类型的字体相关指令来创建一个设置,其中的值1em
值为不是在数学和文本模式下也一样。因此,他的例子是一个重要的限定词。
更一般地,每当你使用不同的字体系列来显示文本和数学公式(甚至可能是不同的大小)时,你将要发现这两个变体不会产生相同的输出。
答案3
\quad
是 1em 的 hskip,其定义在数学和文本模式下相同,但是您给出的两种用法之间存在许多差异。值得注意的是,它em
是一个字体相关单位,因此实际大小取决于所使用的字体,但也许更重要的是\text
是盒子命令,因此里面的使用\text
是在框里面,并且不会在换行符处被丢弃:
\documentclass{article}
\setlength\textwidth{2cm}
\usepackage{amsmath}
\begin{document}
\noindent X\dotfill X
\noindent aaa aaa $a + \text{\quad text\quad} b$
\noindent aaa aaa $a + \quad \text{text} \quad b$
\end{document}
答案4
一个反例(?)
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\noindent
$a \text{\quad text\quad} b$\\
$a \quad \text{text} \quad b$
\font\meta=logo10 at 20pt
\noindent
\meta
{$A \text{\quad META\quad} M$\\
$A \quad \text{META} \quad M$}
\end{document}
这个例子不是很自然,但是它表明,如果em
相等,答案就是肯定的。