TeX 中用于分数的新命令

TeX 中用于分数的新命令

现在我需要重新定义分数如下

通过写入\fr{2,3},我们得到$\frac{2}{3}$。我该如何实现这一点?我试过

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

但错了。

答案1

下面的示例\fr用一个参数定义并通过帮助宏分隔分子和分母\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}

结果

带有错误检查的变体:

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

答案2

这很容易xparse

\documentclass{article}
\usepackage{xparse}
\NewDocumentCommand{\fr}{>{\SplitArgument{1}{,}}m}{\efrac#1}
\NewDocumentCommand{\efrac}{mm}{\ensuremath{\frac{#1}{#2}}}

\begin{document}
Here's \fr{2,3} and also in math $\fr{4,2}=2$.
\end{document}

用 声明的参数\SplitArgument应包含一个逗号。宏将参数拆分为两个括号部分,并将其作为参数传递\efrac,而该参数又包含两个参数。

不过,能够打字并不\fr{2,3}比使用更清晰的更方便$\frac{2}{3}$。相信我。

相关内容