我尝试写以下内容$T_E$
,但它以斜体显示。我也尝试过,$\text{T_E}$
但 LaTeX 给出了错误。
答案1
答案2
以下示例说明了几种可能的解决方案。
\documentclass{scrartcl}
\usepackage{amsmath}
\newcommand{\testline}{Text $\mathrm{T}_\mathrm{E}$ or $\text{T}_\text{E}$ or $\textup{T}_\textup{E}$ or T\textsubscript E}
\begin{document}
\testline
\itshape\testline
\sffamily\upshape\testline
\itshape\testline
\rmfamily\upshape\bfseries%as before but bold
\testline
\itshape\testline
\sffamily\upshape\testline
\itshape\testline
\end{document}
观察其中一些采用了文本的样式和字体。
答案3
使用现代工具链
使用unicode-math
包(我个人推荐,尽管不是每个人都同意)\mathrm
仍然支持向后兼容,但同义词\mathup
和密切相关的也是如此\symup
。
如果使用\symup
,则可以指定与常规文本字体不同的直立字体,以及与、 和 等运算符名称不同的直立字体。我常用的示例是以 ISO 样式设置欧拉恒等式,即以直立字体设置符号常数log
,常数 e、π 和 i 为欧拉常数,其他所有常数为 Palatino 常数。这是一个很好的例子,说明了为什么您可能需要为数学变量使用不同的直立字体。sin
lim
\documentclass[varwidth, preview]{standalone}
\usepackage{mathtools}
\usepackage[math-style=ISO]{unicode-math}
\setmainfont{TeX Gyre Pagella}
\defaultfontfeatures{Scale=MatchLowercase}
\setmathfont{Asana Math}
\setmathfont[range={up/{Latin,latin,Greek,greek},
bfup/{Latin,latin,Greek,greek}},
script-features={}, sscript-features={}
]{Neo Euler}
\newcommand\upe{\symup{e}}
\newcommand\upi{\symup{i}}
\begin{document}
\begin{align*}
\upe^{\upi x} &= \cos{x} + \upi \sin{x} \\
\upe^{\upi \uppi} + 1 &= 0
\end{align*}
\end{document}
(如果您想使用默认字体执行类似的操作,您可以尝试 Latin Modern Roman Unslanted 或 CMU Serif Upright Italic。以下是后者的示例:
\documentclass[varwidth, preview]{standalone}
\usepackage{amsmath}
\usepackage[math-style=ISO]{unicode-math}
\setmathfont{Latin Modern Math}
\setmathfont[range=up/{Latin,latin,Greek,greek}]{CMU Serif Upright Italic}
\begin{document}
\begin{align*}
\symup{e}^{\symup{i} x} &= \cos{x} + \symup{i} \sin{x} \\
\symup{e}^{\symup{i \pi}} + 1 &= 0
\end{align*}
\end{document}
该\symup
命令旨在以这种方式使用。\mathrm
和\mathup
命令更多用于方程中的单词,例如命名变量 TIME 和 ENERGY。 另一个很好的替代方法是使用\operatorname
from 来处理整个单词amsmath
。 这会将文本格式化为\log
或\sin
,即插入空格,如 2 logX而不是 2logx。
\mathtt
类似地,也有\mathsfup
适用于等宽字体和无衬线字母的。
例如,您还可以使用\newcommand\TIME{\mathop{\mbox{\scshape time}}}
运算符的间距来获取小写字母 TIME。
您可以通过加载包将直立数学变量设为默认变量\usepackage[math-style=upright]{unicode-math}
。
使用旧版工具链
该eulerpx
软件包实现了欧拉数学变量和 Palatino 文本的流行组合,以及来自的符号newpxmath
。如果你想要在 PDFLaTeX 中显示直立字母,我认为这是最适合他们的软件包。
该cfr-lm
包使直立斜体变得容易使用;有了这个包,你可以写出\DeclareRobusTCommand\mathui[1]{\mbox{\uishape #1}}
直立斜体。我之前给出的小型大写字母示例\scshape
也可以正常工作。
要以默认字体格式化变量名,\operatorname
fromamsmath
是一个不错的选择。
对于更复杂的用例,有\DeclareMathAlphabet
和\DeclareMathSymbol
。