我正在使用这个解决方案由 Bernard 编写,使显示模式下的方程式在双倍行距的文档中以单倍行距显示。如何才能使内联数学达到类似的效果?
\documentclass{article}
\usepackage{lipsum}
\usepackage{amsmath}
\usepackage{physics}
\usepackage{fontspec}
\usepackage[doublespacing,nodisplayskipstretch]{setspace}
\usepackage{etoolbox}
\BeforeBeginEnvironment{align*}{\begin{singlespace}\vspace*{-\baselineskip}}
\AfterEndEnvironment{align*}{\end{singlespace}\noindent\ignorespaces}
\begin{document}
\lipsum*[2]
\begin{align*}
Abc = DEF \\
DEF = Abc
\end{align*}
\lipsum[2]
Inline math: $\mqty(x\\y)$
\end{document}
答案1
最好设置\jot
为负维度。接下来,您可以设置\arraystretch
为的倒数\baselinestretch
,这将影响array
基础对象。
\documentclass{article}
\usepackage{amsmath}
\usepackage{physics}
\usepackage[
doublespacing,
nodisplayskipstretch
]{setspace}
\usepackage{lipsum}
\setlength{\jot}{-4pt}
\renewcommand{\arraystretch}{0.6}
\begin{document}
\lipsum*[2]
\begin{align*}
Abc = DEF \\
DEF = Abc
\end{align*}
\lipsum[2]
Inline math: $\mqty(x\\y)$
\end{document}
说明:在对齐环境中amsmath
增加\jot
行间距。
我并不赞同使用physics
;实际上我建议不是使用它。
如果您还想修复cases
、加载etoolbox
,请在文档序言中说
\makeatletter
\patchcmd{\env@cases}{1.2}{0.72}{}{}
\makeatother
为什么0.72
?因为\env@cases
确实如此\renewcommand{\arraystretch}{1.2}
,但我们实际上希望它是1.2
乘以0.6
,也就是的倒数,即1.667
的值。\baselinestretch
doublespacing
如果\onehalfspacing
使用,它对应1.25
的值\baselinestretch
是,而使用的倒数是0.8
。因为cases
您需要0.96
而不是0.72
。