[Tex/LaTex] New command in TeX for fraction

fractions

Now I need to redefine the fractions as follows

By writing \fr{2,3}, we get $\frac{2}{3}$. How can I achieve this? I have tried

\newcommand{\fr}[1,2]{\frac{#1}{#2}}

but got wrong.

Best Answer

The following example defines \fr with one argument and separates the numerator and denominator via the help macro \fr@aux:

\documentclass{article}

\makeatletter
\newcommand*{\fr}[1]{%
  \fr@aux#1,,\@nil
}
\def\fr@aux#1,#2,#3\@nil{%
  \ensuremath{\frac{#1}{#2}}%
}
\makeatother

\begin{document}
\[ \fr{2,3} = \fr{20,30} \]
\end{document}

Result

A variant with error checking:

\documentclass{article}

\makeatletter
\newcommand*{\fr}[1]{%
  \fr@aux#1,,\@nil
}
\def\fr@aux#1,#2,#3\@nil{%
  \def\fr@param{#2#3}%
  \ifx\fr@param\@empty
    \errmessage{\string\fr: Missing comma}%
  \else
    \def\fr@param{#3}%
    \ifx\fr@param\fr@check
    \else
      \errmessage{\string\fr: Too many commas}%
    \fi
  \fi
  \ensuremath{\frac{#1}{#2}}%
}
\def\fr@check{,}
\makeatother

\begin{document}
  \[ \fr{2,3} = \fr{20,30} \]

  % Trigger errors:
  \fr{1}
  \fr{2,3,4}
\end{document}
Related Question