我想指出这个奇怪的问题。我使用的是来自 answer 的代码自动改善数学表达式之间的间距? 这会改变 sqrt 符号,因此
现在看起来像
奇怪的是,当我加载 breqn 时,奇怪的事情发生了。比较一下
\documentclass[12pt]{book}
\usepackage{amsmath}
\usepackage{breqn}
\iftrue
%see https://tex.stackexchange.com/questions/553382/improving-spacing-between-math-expressions-automatically
%added july 13, 2020
% Give a nicer sqrt symbol.
\usepackage{letltxmacro}
\makeatletter
\let\oldr@@t\r@@t
\def\r@@t#1#2{%
\setbox0=\hbox{$\oldr@@t#1{#2\,}$}\dimen0=\ht0
\advance\dimen0-0.2\ht0
\setbox2=\hbox{\vrule height\ht0 depth -\dimen0}%
{\box0\lower0.4pt\box2}}
\LetLtxMacro{\oldsqrt}{\sqrt}
\renewcommand*{\sqrt}[2][\ ]{\oldsqrt[#1]{#2}\,}
\makeatother
\fi
\begin{document}
\[
\frac{\sqrt{2}\, \mathrm{arctanh} \left(\frac{f \sqrt{2}}{2 \sqrt{c_{1}}}\right)}{\sqrt{c_{1}}}
\]
\end{document}
使用 lualatex 编译,得到
字母f
对齐变得不好。它已经倒下了。再次编译上述内容,但不加载 breqn,这是输出
现在f
基数较高,这是正常的。
因此,目前我删除了改变 sqrt 符号的代码,并保留了breqn
,因为我更需要这个。这是结果
\documentclass[12pt]{book}
\usepackage{amsmath}
\usepackage{breqn}
\begin{document}
\[
\frac{\sqrt{2}\, \mathrm{arctanh} \left(\frac{f \sqrt{2}}{2 \sqrt{c_{1}}}\right)}{\sqrt{c_{1}}}
\]
\end{document}
这事谁对谁错? 是breqn
上面链接的问题中的代码改变了 sqrt 符号,导致了这个对齐问题吗?
答案1
问题不在于 f,而在于根:它太大了。正如评论中提到的那样(以及之前的回答),breqn 重新定义了数学排版的许多方面。这让它变得非常脆弱。除此之外,它还加载了 mathstyle 包,该包重新定义了原始\mathchoice
命令,并且不能正确处理带有可选参数的平方根。正如下面所看到的,如果您手动强制使用脚本样式或恢复为原始样式\mathchoice
(但这可能会破坏 breqn 中的其他内容...),它就会起作用。
\documentclass[12pt]{book}
\usepackage{amsmath}
\let\orimathchoice\mathchoice
\usepackage{mathstyle}
\begin{document}
\[
\frac{\frac{f\sqrt[x]{2} \sqrt{2}}{2}}{xxx}
\]
\[
\frac{\frac{f\scriptstyle \sqrt[x]{2}\sqrt{2}}{2}}{xxx}
\]
\let\mathchoice\orimathchoice
\[
\frac{\frac{f\sqrt[x]{2} \sqrt{2}}{2}}{xxx}
\]
\end{document}