在我的文档中,我使用的字体和大小使得 scriptscriptstyle 太小,看起来很奇怪:
如果\sqrt[3]{...}
我\sqrt[\scriptstyle 3]{...}
这样写会更好:
我想将其应用于文档中的所有平方根,而不必\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
。