如何防止添加下标之后使文本变为斜体?

如何防止添加下标之后使文本变为斜体?

当我尝试在文本中添加下标(我写 O_L 和 O_R 来表示左和右)时,之后的所有文本都变为斜体。有什么想法可能导致这种情况吗?

答案1

导致此行为的原因是 TeX 的数学模式和文本模式之间的差异。在数学模式中,每个字符都是一个单独的实体。与程序员不同,数学家不相信长而富有表现力的名称。对于数学家来说,两个字符的标识符太长了。

并非只有下标名称才会受到这种处理。假设您有一个名为“foobar”的变量,并且想要在某个数学表达式中使用此名称。对您来说,“foobar”只是一个多字符标识符。这不是 TeX 在数学模式下看待事物的方式。在数学模式下,TeX 将“foobar”视为“f*o*o*b*a*r”,但使用隐式乘法而不是显式乘法。TeX 将在每个字母之间插入少量空格,以显示每个字母确实是一个单独的实体,并且这些实体通过隐式乘法连接起来。

每当有多字符标识符、多字符下标、多字符上标或任何其他多字符实体并且 TeX 处于数学模式时,您都需要覆盖此行为。有很多方法可以实现这一点。所有这些方法都会暂时将 TeX 恢复到 LR(文本)模式。一种简单的方法是将实体放在一个框中。另一种,也是我个人的选择,是使用\textAMS 数学包提供的命令。再说一次,那是因为我\RequirePackage{amsmath}或者\usepackage{amsmath}全部我的 LaTeX 文档。

答案2

我在常规文本中使用下标和上标的方式是使用以下两个命令

\newcommand{\sur}[1]{\ensuremath{^{\textrm{#1}}}}
\newcommand{\sous}[1]{\ensuremath{_{\textrm{#1}}}}

然后只需要使用

O\sur{superscript}
O\sous{subscript}

当然,你可以按照你想要的方式命名它们,只要你不想保留我使用的法语名字就行了:)

答案3

您不能在文本模式下使用下标,只能在数学模式下使用,因此您有两个选择:xport 建议的选项或使用包提供的特定命令babel。例如,如果您用意大利语书写,包babel允许您以这种方式使用命令\ped

\documentclass{article}
\usepackage[italian]{babel}
\begin{document}
Hi\ped{hi}
\end{document}

我认为您的语言中也会存在类似的命令!

编辑:

看起来\ped\ap命令仅针对意大利语定义!如果您想使用它们,可以从babel手册中复制定义。因此下一个示例将起作用:

\documentclass{article}
\usepackage[<your language>]{babel}

\makeatletter
\DeclareRobustCommand*{\bbl@ap}[1]{\textormath{\textsuperscript{#1}}{^{\mathrm{#1}}}}%
\DeclareRobustCommand*{\bbl@ped}[1]{\textormath{$_{\mbox{\fontsize\sf@size\z@ \selectfont#1}}$}{_\mathrm{#1}}}%
\let\ap\bbl@ap
\let\ped\bbl@ped
\makeatother

\begin{document}
Hi\ped{hi}\ap{hi}
$Hi_{hi}^{hi}$
\end{document}

如您所见,下标和上标的位置与数学模式下的位置略有不同!

答案4

可能你使用的格式如下,

AB_{cd} or {AB_{cd}} or 

$而是在等式的两边用包裹,即

$AB_{cd}$

相关内容