When I use the \frac
command, I notice that the characters used for the fraction terms become smaller than those which are not in the \frac
command. Is there a way to correct it?
[Tex/LaTex] Numbers are very small in numerator and denominator using \frac
fractionsmath-mode
Related Solutions
I though this was an interesting question, so I gave it a try.
Let me start off with the result:
main.tex
:
\documentclass{article}
\usepackage{wfrac}
\begin{document}
\setmaxeq{a+b} % Reference equation for size
\[ \wfrac{x}{2} \]
\[ \wfrac{x+y}{2} \]
\[ \wfrac{\sum_{i=1}^{N} i^3}{x+y+z+t} \]
\[ \wfrac{\sum_{i=1}^{N} i^3}{\sum_{i=1}^{N} i} \]
\setmax{34pt}{10pt} % Manual maximum size
\[ \wfrac{\sum_{i=1}^{N} i^3}{\sum_{i=1}^{N} i} \]
\setmaxeq{x} % Reference equation again
\[ \wfrac{x}{x} \]
\[ \efrac{x}{x} \]
\end{document}
And it looks like this:
Options:
text
: compare to the equation in\textstyle
.display
: compare to the equation in\displaystyle
.none
: compare to the equation in whatever style is currently active.noparen
: no parenthesessmall
: small maximum height and widthbig
: big maximum height and widthhuge
: huge maximum height and widthlparen
: set left paren, eg:lparen=\left[
rparen
: set right paren, eg:rparen={\right]}
div
: set division mark, eg:div=\div
Commands
\wfrac
: fraction following 'less' rules.\efrac
: fraction following 'less or equal' rules.\setmax
: set the maximum size.\setmaxeq
: set the maximum size using a reference equation.\getmax
: get the maximum size.\getsize
: get the size from an equation.\setparen
: set the parentheses, takes two arguments.\setdiv
: set the division mark.
And here is wfrac.sty
:
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
\ProvidesPackage{wfrac}[2012/11/03 v1.01 intelligent fractions]
% Lengths and widths
\newdimen \wfrac@hx
\newdimen \wfrac@hy
\newdimen \wfrac@hmax
\newdimen \wfrac@wx
\newdimen \wfrac@wy
\newdimen \wfrac@wmax
\newdimen \wfrac@wmaxcalc
% Parenthesis and division mark
\newcommand*{\wfrac@lparen}{\left(}
\newcommand*{\wfrac@rparen}{\right)}
\newcommand*{\wfrac@div}{\middle/}
% Options
\IfFileExists{xkeyval.sty}{
\RequirePackage{xkeyval}
\DeclareOptionX{lparen}{\renewcommand*{\wfrac@lparen}{##1}}
\DeclareOptionX{rparen}{\renewcommand*{\wfrac@rparen}{##1}}
\DeclareOptionX{div}{\renewcommand*{\wfrac@div}{##1}}
}{
\let\DeclareOptionX\DeclareOption
\let\ExecuteOptionsX\ExecuteOptions
\let\ProcessOptionsX\ProcessOptions
}
\DeclareOptionX{text}{\edef\wfrac@style{\textstyle}}
\DeclareOptionX{display}{\edef\wfrac@style{\displaystyle}}
\DeclareOptionX{none}{\edef\wfrac@style{}}
\DeclareOptionX{noparen}{\renewcommand*{\wfrac@lparen}{}\renewcommand*{\wfrac@rparen}{}}
\DeclareOptionX{small}{\wfrac@wmax = 25pt \wfrac@hmax = 10pt}
\DeclareOptionX{big}{\wfrac@wmax = 50pt \wfrac@hmax = 50pt}
\DeclareOptionX{huge}{\wfrac@wmax = 100pt \wfrac@hmax = 100pt}
\ExecuteOptionsX{text,small}
\ProcessOptionsX\relax
% Fraction variations
\newcommand*{\wfrac@Afrac}[2]{\left. \wfrac@lparen #1 \wfrac@rparen \wfrac@div \wfrac@lparen #2 \wfrac@rparen \right.}
\newcommand*{\wfrac@Bfrac}[2]{\frac{1}{#2}\wfrac@lparen #1 \wfrac@rparen}
\newcommand*{\wfrac@Cfrac}[2]{\frac{#1}{#2}}
% Main commands
\newcommand*\setparen[2]{
\renewcommand*{\wfrac@lparen}{#1}
\renewcommand*{\wfrac@rparen}{#2}
}
\newcommand*\setdiv[1]{
\renewcommand*{\wfrac@div}{#1}
}
\newcommand*\setmax[2]{
\wfrac@wmax = #1
\wfrac@hmax = #2
}
\newcommand*\setmaxeq[1]{
\settowidth{\wfrac@wmax}{$ \wfrac@style #1 $}
\settoheight{\wfrac@hmax}{$ \wfrac@style #1 $}
}
\newcommand*\getmax{
\the\wfrac@wmax $\times$ \the\wfrac@hmax
}
\newcommand*\getsize[1]{
\settowidth{\wfrac@wx}{$ \wfrac@style #1 $}
\settoheight{\wfrac@hx}{$ \wfrac@style #1 $}
\the\wfrac@wx $\times$ \the\wfrac@hx
}
\newcommand*\wfrac[2]{
\settowidth{\wfrac@wx}{$ \wfrac@style #1 $}
\settowidth{\wfrac@wy}{$ \wfrac@style #2 $}
\settoheight{\wfrac@hx}{$ \wfrac@style #1 $}
\settoheight{\wfrac@hy}{$ \wfrac@style #2 $}
% max(w0, 2 * wy)
\ifdim \wfrac@wmax < 2\wfrac@wy
\wfrac@wmaxcalc = 2\wfrac@wy
\else
\wfrac@wmaxcalc = \wfrac@wmax
\fi
%
\ifdim \wfrac@hy < \wfrac@hmax
\ifdim \wfrac@wy < \wfrac@wmax
\ifdim \wfrac@hx < \wfrac@hmax
\ifdim \wfrac@wx < \wfrac@wmaxcalc
\let\wfrac@frac=\wfrac@Cfrac
\else
\let\wfrac@frac=\wfrac@Bfrac
\fi
\else
\let\wfrac@frac=\wfrac@Bfrac
\fi
\else
\let\wfrac@frac=\wfrac@Afrac
\fi
\else
\let\wfrac@frac=\wfrac@Afrac
\fi
%
\wfrac@frac{#1}{#2}
}
\newcommand*\efrac[2]{
\settowidth{\wfrac@wx}{$ \wfrac@style #1 $}
\settowidth{\wfrac@wy}{$ \wfrac@style #2 $}
\settoheight{\wfrac@hx}{$ \wfrac@style #1 $}
\settoheight{\wfrac@hy}{$ \wfrac@style #2 $}
% max(w0, 2 * wy)
\ifdim \wfrac@wmax < 2\wfrac@wy
\wfrac@wmaxcalc = 2\wfrac@wy
\else
\wfrac@wmaxcalc = \wfrac@wmax
\fi
%
\ifdim \wfrac@hy > \wfrac@hmax
\let\wfrac@frac=\wfrac@Afrac
\else
\ifdim \wfrac@wy > \wfrac@wmax
\let\wfrac@frac=\wfrac@Afrac
\else
\ifdim \wfrac@hx > \wfrac@hmax
\let\wfrac@frac=\wfrac@Bfrac
\else
\ifdim \wfrac@wx > \wfrac@wmaxcalc
\let\wfrac@frac=\wfrac@Bfrac
\else
\let\wfrac@frac=\wfrac@Cfrac
\fi
\fi
\fi
\fi
%
\wfrac@frac{#1}{#2}
}
\endinput
As illustrated in the highest-voted answer to Align denominator of fraction to left, \hfill
will do the trick.
Here's a macro, \myfrac
, that puts the \hfill
either in the numerator or the denominator as necessary
\newcommand{\myfrac}[2]{%
\setbox0\hbox{$#1$} % put the numerator in box0
\dimen0=\wd0 % measure box0
\setbox1\hbox{$#2$} % put the denominator in box1
\dimen1=\wd1 % measure box1
\ifdim\wd0<\wd1 % if box0 is narrower than box1
\dfrac{#1\hfill}{#2} % put \hfill in the numerator
\else
\dfrac{#1}{#2\hfill} % otherwise put \hfill in the denominator
\fi
}
Complete MWE
\documentclass{article}
\usepackage{amsmath}
\newcommand{\myfrac}[2]{%
\setbox0\hbox{$#1$} % put the numerator in box0
\dimen0=\wd0 % measure box0
\setbox1\hbox{$#2$} % put the denominator in box1
\dimen1=\wd1 % measure box1
\ifdim\wd0<\wd1 % if box0 is narrower than box1
\dfrac{#1\hfill}{#2} % put \hfill in the numerator
\else
\dfrac{#1}{#2\hfill} % otherwise put \hfill in the denominator
\fi
}
\begin{document}
\begin{itemize}
\item[Original] $\dfrac{(x_i - x)^{N+1}}{(N+1)!}$
\item[Test 1] $\myfrac{(x_i - x)^{N+1}}{(N+1)!}$
\item[Test 2] $\myfrac{(N+1)!}{(x_i - x)^{N+1}}$
\end{itemize}
\end{document}
Best Answer
A larger (nicer?) version of the fraction can be obtained with
\dfrac
.