\ProvidesPackage{variablelm}[2017/04/03 v1.1.1 to control the scaling for Latin Modern Fonts by Yuwsuke KIEDA]

\RequirePackage{xkeyval}
\@ifpackageloaded{lmodern}{}{\@latexerr{You must be load "lmodern" package}\@ehb}
\@ifpackageloaded{amsmath}{}{%
  \@latex@warning@no@line{\noexpand\usepackage{amsmath} is effective for correct functioning of \noexpand\big, \noexpand\Big, \noexpand\bigg, etc}}

\DeclareOptionX{scale}[1.0]{\def\alphabet@scale{#1}}
\DeclareOptionX{ttscale}[1.0]{\def\alphabet@scale@tt{#1}}
\DeclareOptionX{sfscale}[1.0]{\def\alphabet@scale@sf{#1}}
\DeclareOptionX{encoding}[T1]{\def\alphabet@scale@encoding{#1}}

\@ifundefined{alphabet@scale}{\def\alphabet@scale{1.0}}{}
\@ifundefined{alphabet@scale@tt}{\def\alphabet@scale@tt{\alphabet@scale}}{}
\@ifundefined{alphabet@scale@sf}{\def\alphabet@scale@sf{\alphabet@scale}}{}
\@ifundefined{alphabet@scale@encoding}{\def\alphabet@scale@encoding{T1}}{}

\renewcommand{\rmdefault}{vlmr}
\renewcommand{\sfdefault}{vlmss}
\renewcommand{\ttdefault}{vlmtt}

\DeclareOptionX{variablett}{\renewcommand{\ttdefault}{vlmvtt}}
\DeclareOptionX{lighttt}{\let\vlmtt@use@light@as@normal\@empty}

%\ProcessOptions\relax

\ProcessOptionsX

\@ifpackageloaded{fontenc}{}{\RequirePackage[\alphabet@scale@encoding]{fontenc}}

\SetSymbolFont{operators}{normal}{\alphabet@scale@encoding}{vlmr}{m}{n}
\SetSymbolFont{letters}{normal}{OML}{vlmm}{m}{it}
\SetSymbolFont{symbols}{normal}{OMS}{vlmsy}{m}{n}
\SetSymbolFont{largesymbols}{normal}{OMX}{vlmex}{m}{n}
\SetSymbolFont{operators}{bold}{\alphabet@scale@encoding}{vlmr}{bx}{n}
\SetSymbolFont{letters}{bold}{OML}{vlmm}{b}{it}
\SetSymbolFont{symbols}{bold}{OMS}{vlmsy}{b}{n}
\SetSymbolFont{largesymbols}{bold}{OMX}{vlmex}{m}{n}

\SetMathAlphabet{\mathbf}{normal}{\alphabet@scale@encoding}{vlmr}{bx}{n}
\SetMathAlphabet{\mathsf}{normal}{\alphabet@scale@encoding}{vlmss}{m}{n}
\SetMathAlphabet{\mathit}{normal}{\alphabet@scale@encoding}{vlmr}{m}{it}
\SetMathAlphabet{\mathtt}{normal}{\alphabet@scale@encoding}{vlmtt}{m}{n}
\SetMathAlphabet{\mathbf}{bold}{\alphabet@scale@encoding}{vlmr}{bx}{n}
\SetMathAlphabet{\mathsf}{bold}{\alphabet@scale@encoding}{vlmss}{bx}{n}
\SetMathAlphabet{\mathit}{bold}{\alphabet@scale@encoding}{vlmr}{bx}{it}
\SetMathAlphabet{\mathtt}{bold}{\alphabet@scale@encoding}{vlmtt}{m}{n}
\endinput
