阅读 AMSMath 中 `\cfrac` 的定义

阅读 AMSMath 中 `\cfrac` 的定义

我正在\cfrac阅读数学家协会...

\newcommand{\cfrac}[3][c]{{\displaystyle\frac{%
  \strut\ifx r#1\hfill\fi#2\ifx l#1\hfill\fi}{#3}}%
  \kern-\nulldelimiterspace}

有人能解释一下这段代码是如何工作的吗?立即看到newcommand 用于定义\cfrac并接受三个参数。我不知道[c]这里是什么意思。

然后进入主要部分。连分数显示样式。 然而,

  • 有人能解释一下l#1r#1的用法吗?它们看起来像条件​​句
  • 我检查了一下#2,并#3对应分子分母

我可以区分重要的部分

{{\displaystyle
\frac{ \strut
    \ifx r#1\hfill\fi
    #2
    \ifx l#1\hfill\fi}
{#3}} 
\kern-\nulldelimiterspace}

然后,如果我用 A 替换 #2,用 BI 替换 #3,就会得到一个很好的分数……就像\frac{A}{B}

\ifx后面总是跟着反向的“如果” \fi ——那么条件r#1和是什么l#

的规则是什么\strut


本网站的其他部分有关于\kern和的讨论。\nulldelimiterspace

如何计算 \left\right 添加的精确宽度

答案1

\newcommand{\cfrac}[3][c]{...

定义一个具有两个强制参数和一个可选参数的命令,因此使用是\cfrac{a}{b}\cfrac[r]{a}{b}前者等同于\cfrac[c]{a}{b}

\ifx是一个 tex 原语,它测试以下两个标记,因此如果#1(可选参数的值)是r

\ifx r#1

为真,因此\hfill添加,否则控制跳转到\fi

所以

\cfrac[r]{a}{b}\frac{\strut\hfill a}{b}

\cfrac[c]{a}{b}\frac{\strut a}{b}

\cfrac[l]{a}{b}\frac{\strut a \hfill}{b}

每一个都后面\displaystyle跟着一个负空间\kern-\nulldelimiterspace

为了完整性,其他命令

A\strut是一条不可见的零宽度规则(具有高度0.7\baselineskip和深度0.3\baselineskip),旨在填充正常的行距。这确保无论分子是否相同,分子都具有相同的垂直空间,a或者A使用相同的技术在矩阵中提供一致的间距。

\displaystyle提供更开放的风格,通常用于显示方程式,而\begin{equation}不是内联数学$

\nulldelimiterspace是您从诸如构造中的“缺失分隔符”中获得的空间,\left\{xxxx\right.但特别是它被添加在分数构造的两侧,这使得 cfrac 在右侧始终具有紧密的间距,正如连续分数所需要的那样。

下面的例子有夸张的设置来\nulldelimiterspace展示效果。

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}
\begin{document}

\nulldelimiterspace=10pt
$|\cfrac{a}{bbb}|$


$|\cfrac[l]{a}{bbb}|$


$|\cfrac[r]{a}{bbb}|$

\end{document}

相关内容