我写这篇文章是因为我想知道是否有一种自动的方法(比如在序言中放些东西)可以让下标表现得像双下标:例如如果我写
something_a
它应该表现为
something_{_a}
答案1
您可能不想丢失一步下标,但想改变它们的行为。如果您想降低它们,您可以更改 TeX 参数,如以下示例所示(需要选择确切的值):
\documentclass{article}
\begin{document}
\[
a_b
\]
\fontdimen16\textfont2=3pt
\fontdimen17\textfont2=3pt
\[
a_b \mbox{ 3pt}
\]
\fontdimen16\textfont2=5pt
\fontdimen17\textfont2=5pt
\[
a_b \mbox{ 5pt}
\]
\end{document}
如果您还想更改下标的大小,则应该更加精确:您对哪种 TeX 方言(例如,普通方言或 LaTeX)感兴趣?
答案2
实际上,你最初的问题非常有趣,但无法直接解决。这涉及到 TeX 如何处理下标。该指令_
(例如a_b
)既不是控制序列也不是控制符号,这些在 TeX Book 中都有描述。但它是一个特殊字符,其功能通过其类别代码声明。因此,不仅像 ' \def_#1{_{_#1}}
' 这样的“重新定义”会失败,而且任何东西都会失败。
您需要的可以通过其他方式解决:通过定制\fontdimen
s(参见上面的答案)和控制下标的大小,我建议这邮政。
或者(但这是一种肮脏的黑客行为):您可以将 catcode 更改为_
active 并重新定义,如下所示:
\documentclass{article}
\catcode`\_=13
\def_#1{\sb{\sb{#1}}}
\begin{document}
$a_b,a_{bc}$
\end{document}