Scale an equation* to fit exact page width - latex

I have a beamer presentation with lots of equations that are too big for a line.
I want to automatically scale them to fit.
The solution to Scale an equation to fit exact page width by https://stackoverflow.com/users/3383640/suuuehgi was great.
However I do not want equation numbers - I want this same resizing to apply to all equation* bits.
I can't figure out how to adjust the code to deal with this. Help much appreciated!

The following code uses a slightly improved approach, noting that content within a display equation is set using \displaystyle (not contained within the measurement in the linked answer). In principle, the approach is the same:
The content is measured horizontally.
The content is resized to fit if it is wider than \linewidth.
The equation* shorthand is redefined to also accommodate this new approach.
\documentclass{beamer}
\usepackage{environ}
\newlength{\myl}
\expandafter\let\expandafter\origequation\csname equation*\endcsname
\expandafter\let\expandafter\endorigequation\csname endequation*\endcsname
\long\def\[#1\]{\begin{equation*}#1\end{equation*}}
\RenewEnviron{equation*}{
\settowidth{\myl}{$\displaystyle\BODY$} % calculate width and save as \myl
\origequation
\ifdim\myl>\linewidth
\resizebox{\linewidth}{!}{$\displaystyle\BODY$}% \myl > \linewidth
\else
\BODY % \myl <= \linewidth
\fi
\endorigequation
}
\begin{document}
\begin{frame}
\begin{equation*}
f(x) = ax^2 + bx + c
\end{equation*}
\begin{equation*}
g(x) = ax^2 + bx + c
- ax^2 - bx - c
+ ax^2 + bx + c
- ax^2 - bx - c
+ ax^2 + bx + c
\end{equation*}
\[
h(x) = \int_a^b \frac{c}{d} x\,\mathrm{d}x
\]
\[
i(x) = \int_a^b \frac{c}{d} x\,\mathrm{d}x
- \int_a^b \frac{c}{d} x\,\mathrm{d}x
+ \int_a^b \frac{c}{d} x\,\mathrm{d}x
- \int_a^b \frac{c}{d} x\,\mathrm{d}x
+ \int_a^b \frac{c}{d} x\,\mathrm{d}x
- \int_a^b \frac{c}{d} x\,\mathrm{d}x
+ \int_a^b \frac{c}{d} x\,\mathrm{d}x
\]
\end{frame}
\end{document}

Related

What's the meaning of "double superscript" in overleaf?

I wrote a wrapped equation in overleaf:
\begin{equation}
\begin{aligned}
\y & = \argmin_{\y'} \sum_{i,j}\W_{ij}||\y'_i - \y'_j||_2^2 \\
& = \argmin_{\y'} \sum_{i,j}(\y'_i - \y'_j)^2\W_{ij} \\
& = \argmin_{\y'} \sum_{i,j}(\y'_i^2 + \y'_j^2 - 2\y'_i\y'_j)\W_{ij} \\
& = \argmin_{\y'} \sum_{i,j}\y'_i^2\W_{ij} + \sum_{i,j}\y'_j^2\W_{ij} - 2\sum_{i,j}\y'_i\y'_j\W_{ij} \\ & = \argmin_{\y'} \sum_{i}\y'_i^2D_{ii} + \sum_{j}\y'_j^2D_{jj} - 2\sum_{i,j}\y'_i\y'_j\W_{ij} \\ & = \argmin_{\y'} 2 (\sum_{i}\y'_i^2D_{ii} - \sum_{i,j}\y'_i\y'_j\W_{ij}) \\
& = \argmin_{\y'} 2 {\y'}^\top \L{\y'} \\
\end{aligned}
\end{equation}
The overleaf shows that there are three "double superscript" error in this code, what is that and how can I fix this (although I can compile it successfully)?
I expect to find the solution to this problem.
A double sub-/superscript error occurs when you have more than one sub-/superscript associated with an element. An example is $x^2^2$ which can be interpreted in two ways: ${x^2}^2$ or $x^{2^2}$. Mathematically they mean the same, but from a typesetting point of view they are interpreted differently:
The first - ${x^2}^2$ - sets both exponents in \scriptstyle (so they're the same size) while the second sets the exponents in staggering (reducing) sizes (first one uses \scriptstyle while the second uses \scriptscriptstyle). This difference in typesetting is rather pushed to the user to fix to avoid confusion or misinterpreting what the result should look like. A similar concept holds for subscripts (like $x_2_2$) and combinations of scripts (like `$x_2^2_2$).
What is hidden in your is the use of a prime (like $y'$) which is similar to $y^\prime$:
$x' = x^\prime \neq x\prime$
As such, $y'^2$ is similar to $y^\prime^2$ which is interpreted as a double superscript, causing the error you see.
The way around it is to appropriately group the elements to denote the way you want it represented in output. In your case, this is most likely ${y'}^2$. I've done that below, with some adjustments to other elements:
\documentclass{article}
\usepackage{mathtools}
% https://tex.stackexchange.com/q/5223/5764
\DeclareMathOperator*{\argmax}{arg\,max}
\DeclareMathOperator*{\argmin}{arg\,min}
\DeclarePairedDelimiter{\norm}{\|}{\|}
\newcommand{\y}{\mathcal{Y}}
\newcommand{\W}{\mathcal{W}}
\begin{document}
\begin{equation}
\begin{aligned}
\y & = \argmin_{\y'} \sum_{i, j} \W_{ij} \norm[\big]{ \y'_i - \y'_j }_2^2 \\
& = \argmin_{\y'} \sum_{i, j} \bigl(\y'_i - \y'_j \bigr)^2 \W_{ij} \\
& = \argmin_{\y'} \sum_{i, j} \bigl( {\y'}_i^2 + {\y'}_j^2 - 2 \y'_i \y'_j \bigr) \W_{ij} \\
& = \argmin_{\y'} \sum_{i, j}{\y'}_i^2 \W_{ij} + \sum_{i, j} {\y'}_j^2 \W_{ij} - 2\sum_{i, j} \y'_i \y'_j \W_{ij} \\
& = \argmin_{\y'} \sum_i {\y'}_i^2 D_{ii} + \sum_j {\y'}_j^2 D_{jj} - 2 \sum_{i, j} \y'_i \y'_j \W_{ij} \\
& = \argmin_{\y'} 2 \biggl( \sum_i {\y'}_i^2 D_{ii} - \sum_{i, j} \y'_i \y'_j \W_{ij} \biggr) \\
& = \argmin_{\y'} 2 {\y'}^\top \L \y'
\end{aligned}
\end{equation}
\end{document}

How do I type system of equations in the same line with text in LaTeX?

I want my document like this
(system of equations in the same line with text) not like this
Can anyone help me please? Here is my code for the second picture:
\hspace{2ex} Theo hệ thức Viète, ta có:
$$\begin{cases}
x_1 + x_2 = 2(m-1)\\
x_1 x_2 = -3-m
\end{cases} $$
There are two ways of typesetting mathematical equations in LaTeX, namely text style and display style. You are trying to write an in-line equation which is text style but the syntax $$<some equation>$$ is used for display style. The syntax for text style is $<some equation>$. So your code should be
\hspace{2ex} Theo hệ thức Viète, ta có:
$\begin{cases}
x_1 + x_2 = 2(m-1)\\
x_1 x_2 = -3-m
\end{cases}$
MWE:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\hspace{2ex} Theo hệ thức Viète, ta có:
$\begin{cases}
x_1 + x_2 = 2(m-1)\\
x_1 x_2 = -3-m
\end{cases}$
\end{document}
Output:
Note: You should use \[<some equation>\] instead of $$<some equation>$$ for display style. You may find the reason here.

How to align math equations even when some variables are missing?

I want the variables and signs aligned in a set of equations.
Desired output:
What I am trying in Mathjax:
\[
\begin{align}
2&x_1 - x_2 &+ 1.5&x_3 &= 8 \\
&x_1 &- 4&x_3 &= -1
\end{align}
\]
What I got:
So, what do I have to do to have the same alignment as in the "desired output" image?
There are a number of ways to achieve this. Below I use an array (with appropriate stretch and spacing), alignat and align coupled with eqparbox for measuring similarly-tagged boxes (this latter approach requires two compilations with every change in the largest element associated with every <tag>):
\documentclass{article}
\usepackage{amsmath,eqparbox}
%\usepackage{xparse}% If you have LaTeX2e < 2020-10-01
% https://tex.stackexchange.com/a/34412/5764
\makeatletter
% \eqmathbox[<tag>][<align>]{<math>}
\NewDocumentCommand{\eqmathbox}{o O{c} m}{%
\IfValueTF{#1}
{\def\eqmathbox###1##2{\eqmakebox[#1][#2]{$##1##2$}}}
{\def\eqmathbox###1##2{\eqmakebox{$##1##2$}}}
\mathpalette\eqmathbox#{#3}
}
\makeatother
\begin{document}
\[
\renewcommand{\arraystretch}{1.2}
\setlength{\arraycolsep}{0pt}
\begin{array}{ r c r c r c r }
2 x_1 & {}-{} & x_2 & {}+{} & 1.5 x_3 & {}={} & 8 \\
x_1 & & & {}-{} & 4 x_3 & {}={} & -7
\end{array}
\]
\begin{alignat*}{4}
2 x_1 & {}-{} & x_2 & {}+{} & 1.5 x_3 = {} && 8 \\
x_1 & & & {}-{} & 4 x_3 = {} && -7
\end{alignat*}
\begin{align*}
\eqmathbox[x1][r]{2 x_1} - \eqmathbox[x2][r]{x_2} + \eqmathbox[x3][r]{1.5 x_3} &= \eqmathbox[c][r]{8} \\
\eqmathbox[x1][r]{ x_1} \phantom{{}-{}} \eqmathbox[x2][r]{} - \eqmathbox[x3][r]{4 x_3} &= \eqmathbox[c][r]{-7}
\end{align*}
\end{document}
All yield similar output:

How To Write A Beautiful Brace In Tex

Today I see a beautiful equation:
(Sorry for cannot put the pic directly, I'm new here.)
I don't know how to write it in Tex. I try my best to write like following:
\begin{equation}
\begin{aligned}
r_{t}=\left\{
\begin{array}{crl}
1+\dfrac{\bar{R}_{Q}(t+\Delta t)-R_{Q}(t)}{2\Delta t/T_{single}}\; &+0\qquad &if\,\bar{R}_{Q}(t+\Delta t)>0,\\
0 \; &-P\qquad &if\,R_{Q}(t)\neq 0\wedge R_{Q}(t+\Delta t)=0,\\
0\; &+0\qquad &if\,R_{Q}(t)=0
\label{rforProtRwd}
\end{array}
\right.
\\
\underbrace{\hspace{10em}}_{=:r_{t}^{(1)}}\hspace{1em}\underbrace{\hspace{2em}}_{=:r_{t}^{(2)}}\hspace{17em}
\end{aligned}
\end{equation}
It is obviously that the underbrace is a little far from the main part of the equation. And actually both the method I write and the result are ugle.
So I wonder if there are some better ways to write it.
Hoping someone can help.
Here is an accurate \underbrace that matches the content within a cases environment.
\documentclass{article}
\usepackage{mathtools,eqparbox}
\begin{document}
\begin{align}
r_t = \begin{cases}
\eqmakebox[LHS]{$1 + \dfrac{\bar{R}_Q(t + \Delta t) - R_Q(t)}{2 \Delta t / T_{\text{single}}}$}
+ 0 & \text{if $\bar{R}_Q(t + \Delta t) > 0$}, \\
\eqmakebox[LHS]{$0$}
- P & \text{if $R_Q(t) \neq 0 \wedge R_Q(t + \Delta t) = 0$}, \\
\eqmakebox[LHS]{$0$}
+ 0 & \text{if $R_Q(t) = 0$}
\end{cases} \\[-1.2\normalbaselineskip]
\underbrace{\eqmakebox[LHS]{\mathstrut}}_{=:r_t^{(1)}}
\underbrace{\mathstrut\phantom{{} - P}}_{\mathclap{=:r_t^{(2)}}}
\quad\phantom{\text{if $R_Q(t) \neq 0 \wedge R_Q(t + \Delta t) = 0$},} \nonumber
\end{align}
\end{document}

Left align block of equations

I want to left align a block of equations. The equations in the block itself are aligned, but that's not related at all to my question! I want to left align the equations rather than have them centered all the time, because it looks dumb with narrow centered equations.
Example, I want to left align this
\begin{align*}
|\vec a| &= \sqrt{3^{2}+1^{2}} = \sqrt{10} \\
|\vec b| &= \sqrt{1^{2}+23^{2}} = \sqrt{530} \\
\cos v &= \frac{26}{\sqrt{10} \cdot \sqrt{530}} \\
v &= \cos^{-1} \left(\frac{26}{\sqrt{10} \cdot \sqrt{530}}\right) \\
v &= \uuline{69.08...\degree}
\end{align*}
but also this
\begin{align*}
f(x) = -1.25x^{2} + 1.5x
\end{align*}
How is this done? If it's even possible.
Try to use the fleqn document class option.
\documentclass[fleqn]{article}
(See also http://en.wikibooks.org/wiki/LaTeX/Basics for a list of other options.)
You can use \begin{flalign}, like the example bellow:
\begin{flalign}
&f(x) = -1.25x^{2} + 1.5x&
\end{flalign}
Try this:
\begin{flalign*}
&|\vec a| = \sqrt{3^{2}+1^{2}} = \sqrt{10} & \\
&|\vec b| = \sqrt{1^{2}+23^{2}} = \sqrt{530} &\\
&\cos v = \frac{26}{\sqrt{10} \cdot \sqrt{530}} &\\
&v = \cos^{-1} \left(\frac{26}{\sqrt{10} \cdot \sqrt{530}}\right) &\\
\end{flalign*}
The & sign separates two columns, so an & at the beginning of a line means that the line starts with a blank column.
The fleqn option in the document class will apply left aligning setting in all equations of the document. You can instead use \begin{flalign}. This will align only the desired equations.

Resources