找回密码
 快速注册
搜索
查看: 30|回复: 1

关于 \cfrac

[复制链接]

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2024-5-21 21:22 |阅读模式
本帖最后由 kuing 于 2024-5-21 21:28 编辑 今天看到一 latex 排版的试题,我一眼就看到里面的分式特别丑,像这样:



\dfrac 也不会这样,后来我猜可能用了 \cfrac ,一试果然。
那份文档通篇的分式都如此,滥用 \dfrac 的见得多,滥用 \cfrac 的还是第一次见😅。

后来我又在网上查了下 \cfrac ,发现知乎有人问过类似问题,但回答不够专业,于是我就顺便回答了一下,见:
zhihu.com/question/457761901/answer/3505461377
这边也贴一份:

\cfrac 用于连分数的输入。

\cfrac 在 \dfrac 的基础上添加了可以让分子左对齐或右对齐的可选参数:[l] 左对齐、[r] 右对齐

代码:$\cfrac[l]1{1111}+\cfrac[r]1{1111}$ 显示:$\cfrac[l]1{1111}+\cfrac[r]1{1111}$(mathjax 显示与 latex 有别)

因此可以实现这样的效果:


除此之外,还有两个细节的处理。

打开 amsmath 的详细手册 查找 \cfrac 可以看到以下说明以及具体代码:
\cfrac
Continued fractions. The optional arg l or r controls horizontal placement of
the numerators. The \kern-\nulldelimiterspace is needed in the definition
if we want the right-hand sides of the fraction rules to line up. The \strut
keeps the numerator of a subsidiary cfrac from coming too close to the fraction
rule above it.
  1. \DeclareRobustCommand{\cfrac}[3][c]{{\displaystyle\frac{%
  2. \strut\ifx r#1\hfill\fi#2\ifx l#1\hfill\fi}{#3}}%
  3. \kern-\nulldelimiterspace}
复制代码


细节一:分子添加了 \strut,作用是撑高分子,下图对比 \dfrac 与 \cfrac :



可以看到 \cfrac 的分子不仅离分数线更远一点,上方还有一点空间,如果用 \left( \right) 括住 \cfrac 的话,差别会很明显(效果参见链接中的另一回答)。

细节二:分式之后有个 \kern-\nulldelimiterspace,消除了分式右边的一个小距离(从上图也能看出来),这样做的目的是让连分数的每一条分数线都能画到整个分式的最右边,下图对比 \dfrac 与 \cfrac :



最后再补充一下细节一的 \strut,它实际上是一个高=0.7\baselineskip、深=0.3\baselineskip、宽=0 的盒子(参见这里),所以分子被撑高的高度其实还和全文所设的行距有关系,因此如果我在前面设置过比如 \linespread{1.5} 的话,那分子高度将会更高:



所以我个人认为 amsmath 的这个设计并不是很好。

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

 楼主| kuing 发表于 2024-5-21 21:39

附:测试代码

我知乎回答里的截图就是在由以下代码生成的 PDF 上截取的。
  1. \documentclass{article}
  2. \usepackage{amsmath}
  3. \usepackage{tikz}
  4. \newcommand\redbox[1]{%
  5. \tikz[baseline=(X.base)]{\node[draw=red,inner sep=0pt] (X) {#1};}}
  6. \begin{document}
  7. \redbox{$\dfrac12$}
  8. \redbox{$\cfrac12$}
  9. $\cfrac[l]1{1111}+\cfrac[r]1{1111}$
  10. $\cfrac[l]1{1+\cfrac[l]1{1+\cfrac[l]1{1+\cfrac[l]1{1}}}}
  11. +\cfrac[r]1{1+\cfrac[r]1{1+\cfrac[r]1{1+\cfrac[r]1{1}}}}$
  12. \redbox{$\dfrac1{1+\dfrac1{1+\dfrac1{1+\dfrac1{1}}}}$}
  13. \redbox{$\cfrac1{1+\cfrac1{1+\cfrac1{1+\cfrac1{1}}}}$}
  14. \vskip2em
  15. \verb"\linespread{1.5}":
  16. \linespread{1.5}
  17. \redbox{$\dfrac12$}
  18. \redbox{$\cfrac12$}
  19. \redbox{$\dfrac1{1+\dfrac1{1+\dfrac1{1+\dfrac1{1}}}}$}
  20. \redbox{$\cfrac1{1+\cfrac1{1+\cfrac1{1+\cfrac1{1}}}}$}
  21. \end{document}
复制代码

手机版|悠闲数学娱乐论坛(第3版)

GMT+8, 2025-3-4 12:04

Powered by Discuz!

× 快速回复 返回顶部 返回列表