我正在\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#1
和r#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
答案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}