![自动将方程式放入页面宽度的对齐环境中](https://linux22.com/image/467167/%E8%87%AA%E5%8A%A8%E5%B0%86%E6%96%B9%E7%A8%8B%E5%BC%8F%E6%94%BE%E5%85%A5%E9%A1%B5%E9%9D%A2%E5%AE%BD%E5%BA%A6%E7%9A%84%E5%AF%B9%E9%BD%90%E7%8E%AF%E5%A2%83%E4%B8%AD.png)
我正在开发的系统中有一个问题,长方程超出了页面宽度。LaTeX 是由算法自动生成的,我希望有一种方法可以让它适合页面,即使这会使页面变小一点。如果方程比页面宽度稍大,这个解决方案就没问题了。显然,在极端情况下,开发人员必须将方程拆分成更多方程。
据我估计,让系统自动识别等式中的位置并将其分成更多行要困难得多。
在浏览了该论坛中的各种帖子(例如这个)后我可以使用调整框来对齐吗) 我找不到在对齐环境中使用 \resizebox 的有效代码示例。例如,我如何调整以下方程的大小以适合页面?
\begin{align*}
N_{Ed0} &= N_x · \cos^2(\phi_0) + N_y · \sin^2(\phi_0) + 2 · N_{xy} · \sin(\phi_0) · \cos(\phi_0) - N_0 · \cot(\phi_0) \\
&= (-1.81234E3) · \cos^2(47.0113) + (-9.06168E3) · \sin^2(47.0113) + 2 · 28.19E3 · \sin(47.0113) · \cos(47.0113) - 18.4356 · \cot(47.0113) = \mathbf{ 22.4121E3 \: N }
\end{align*}
PS:小数点是用户选项,因此解决方案不能是“减少小数位”。
答案1
您需要一个水平模式构造,\resizebox
我真的不建议这样做,因为它很快就会让数学变得不可读而没有任何警告,但是:
\documentclass{article}
\usepackage{amsmath,graphicx}
\DeclareUnicodeCharacter{00B7}{\cdot}
\begin{document}
\noindent X\dotfill X
\begin{center}
\resizebox{\textwidth}{!}{$\begin{aligned}
N_{Ed0} &= N_x · \cos^2(\phi_0) + N_y · \sin^2(\phi_0) + 2 · N_{xy} · \sin(\phi_0) · \cos(\phi_0) - N_0 · \cot(\phi_0) \\
&= (-1.81234E3) · \cos^2(47.0113) + (-9.06168E3) · \sin^2(47.0113) + 2 · 28.19E3 · \sin(47.0113) · \cos(47.0113) - 18.4356 · \cot(47.0113) = \mathbf{ 22.4121E3 \: N }
\end{aligned}$}
\end{center}
\end{document}
我会放弃对齐并让 latex 打破内联数学,而不进行字体缩放
\usepackage{amsmath,graphicx}
\DeclareUnicodeCharacter{00B7}{\cdot}
\begin{document}
\noindent X\dotfill X
\begin{center}
$
N_{Ed0} = N_x · \cos^2(\phi_0) + N_y · \sin^2(\phi_0) + 2 · N_{xy} · \sin(\phi_0) · \cos(\phi_0) - N_0 · \cot(\phi_0) $\\$
= (-1.81234E3) · \cos^2(47.0113) + (-9.06168E3) · \sin^2(47.0113) + 2 · 28.19E3 · \sin(47.0113) · \cos(47.0113) - 18.4356 · \cot(47.0113) = \mathbf{ 22.4121E3 \: N }
$
\end{center}
\end{document}
答案2
这是一个可能的解决方案,但这会导致非常糟糕的排版。
参数是您想要扩展的scaleddisplay
环境类型,可以是equation
、gather
或。align
alignat
\documentclass{article}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{newunicodechar}
\usepackage{lipsum}% for mock text
\newunicodechar{·}{\TextOrMath{\textperiodcentered}{\cdot}}
\ExplSyntaxOn
\NewDocumentEnvironment{scaleddisplay}{mb}
{% #1 = type of alignment (equation,gather,align,alignat)
% #2 = body
\tsaras_scaleddisplay:nn { #1 } { #2 }
}{}
\cs_new_protected:Nn \tsaras_scaleddisplay:nn
{
\begin{displaymath}
\resizebox{\textwidth}{!}
{
\__tsaras_scaleddisplaytype:nn { #1 } { #2 }
}
\end{displaymath}
}
\cs_new:Nn \__tsaras_scaleddisplaytype:nn
{
\str_case:nn { #1 }
{
{equation}{$#2$}
{gather}{$\begin{gathered}#2\end{gathered}$}
{align}{$\begin{aligned}#2\end{aligned}$}
{alignat}{$\begin{alignedat}{-1}#2\end{alignedat}$}
}
}
\ExplSyntaxOff
\begin{document}
\lipsum[1][1-4]
\begin{scaleddisplay}{align}
N_{Ed0} &= N_x · \cos^2(\phi_0) + N_y · \sin^2(\phi_0) + 2 · N_{xy} · \sin(\phi_0) · \cos(\phi_0) - N_0 · \cot(\phi_0) \\
&= (-1.81234E3) · \cos^2(47.0113) + (-9.06168E3) · \sin^2(47.0113) + 2 · 28.19E3 · \sin(47.0113) · \cos(47.0113) - 18.4356 · \cot(47.0113) = \mathbf{ 22.4121E3 \: N }
\end{scaleddisplay}
\lipsum[2][1-4]
\end{document}