默认 sqrt 索引为 scriptstyle,而不是 scriptscriptstyle

默认 sqrt 索引为 scriptstyle,而不是 scriptscriptstyle

在我的文档中,我使用的字体和大小使得 scriptscriptstyle 太小,看起来很奇怪:

使用 scriptscriptstyle 索引

如果\sqrt[3]{...}\sqrt[\scriptstyle 3]{...}这样写会更好:

使用 scriptstyle

我想将其应用于文档中的所有平方根,而不必\scriptstyle每次都进行输入。

我的第一个解决方案是这样的:

\let\oldsqrt\sqrt
\renewcommand{\sqrt}[2][\phantom{1}]{\oldsqrt[\scriptstyle#1]{#2}}

但我不能用\uproot{}\sqrt来调整一些分数。(我不知道为什么,但它会抛出一个错误)

因此,我的下一个解决方案尝试是研究\sqrt\show在控制台中使用)的定义

> \sqrt =\long macro:
->\@ifnextchar [\@sqrt \sqrtsign .
<argument> \sqrt

然后我研究了一下\@sqrt定义:

> \@sqrt=macro:
[#1]->\root #1\of .
<argument> \@sqrt

最后我看了一下\root定义并找到了我想要的东西:

> \root=macro:
#1\of ->\setbox \rootbox \hbox {$\m@th \scriptscriptstyle {#1}$}\mathpalette \r
@@t .
<argument> \root

所以我只需要重新定义\root为完全相同但更改\scriptscriptstyle\scriptstyle。我尝试了以下操作:

\makeatletter
\renewcommand{\root}[1]{\setbox\rootbox\hbox{$\m@th\scriptstyle{#1}$}\mathpalette\r@@t}
\makeatother

但它只会抛出大量难以辨认的错误并破坏整个文档。我认为我没有正确理解 的定义\root,所以我的代码不合适。你会怎么做?

我将非常感激你的帮助。

答案1

我不建议破解这些宏,但我认为你正在寻找

\documentclass{article}
\makeatletter
\def\root#1\of{\setbox\rootbox\hbox{$\m@th\scriptstyle{#1}$}\mathpalette\r@@t}
\makeatother
\begin{document}
$\sqrt[3]{4}$
\end{document}

在此处输入图片描述

这是因为根据您发布的定义

> \root=macro:
#1\of ->\setbox \rootbox \hbox {$\m@th \scriptscriptstyle {#1}$}\mathpalette \r
@@t .
<argument> \root

an\of是定义的一部分\root

相关内容