自动将方程式放入页面宽度的对齐环境中

自动将方程式放入页面宽度的对齐环境中

我正在开发的系统中有一个问题,长方程超出了页面宽度。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环境类型,可以是equationgather或。alignalignat

\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}

在此处输入图片描述

相关内容