![扩展 faktor 包](https://linux22.com/image/240229/%E6%89%A9%E5%B1%95%20faktor%20%E5%8C%85.png)
我正在写一个脚本(主题环理论),其中我必须设置许多代数对象的商。通常我只是简单地写M/N
。然而,有些情况下这并不容易阅读(M+N/N
或诸如此类)。所以我想将第一个对象设置得高一点,将第二个对象设置得低一点。我发现因素包可以做到这一点。然而 faktor 使用的\diagup
是固定大小。对于较大的表达式,较大的表达式似乎更合适。你知道我如何更改包的源代码以便
- 我有两个命令(一个带有小斜线,一个带有大斜线)或更好
- 自动
\diagup
具有正确的尺寸。
我也尝试过xfrac
。首先我遇到了这个消息:
This is a LaTeX bug: check coding!
! Command name `\if_num:w' already defined! Current meaning: \ifnum.
\msg_kernel_bug:x ...oding!}\tex_errmessage:D {#1}
ADebian 错误跟踪系统上的评论建议交换mathtools
和xfrac
。这在我的系统上有效。但是 -environment 中的公式gather*
对我来说太小了:
这里的字体大小似乎比内联文本小。这就是我想尝试的原因faktor
。
我注意到了另一个缺点xfrac
。我的文档需要多很多编译时间。初始修订版编译(pdflatex)耗时约 13 秒,而xfrac
编译耗时约 1300 秒,即近半小时。
答案1
从本质上来说,faktor
包裹按以下方式定义命令\faktor
(我们称之为\newfaktor
):
\newcommand*{\newfaktor}[2]{% \newfaktor{#1}{#2} -> #1/#2
\raisebox{0.5\height}{\ensuremath{#1}}% Numerator
\mkern-5mu\diagup\mkern-4mu% Slash /
\raisebox{-0.5\height}{\ensuremath{#2}}% Denominator
}
\faktor
以下是和之间的相似之处\newfaktor
:
为了满足第一个请求——修改分子/分母升高/降低的高度/深度——你可以为 定义一些额外的可选参数\newfaktor
。并且,为了完整起见,xparse
包裹{}
提供了一种混合强制参数和可选参数的便捷方法[]
:
\usepackage{xparse}%
...
\DeclareDocumentCommand{\newfaktor}{m O{0.5} m O{-0.5}}{% \newfaktor{#1}[#2]{#3}[#4] -> #1/#3
\raisebox{#2\height}{\ensuremath{#1}}% Numerator
\mkern-5mu\diagup\mkern-4mu% Slash /
\raisebox{#4\height}{\ensuremath{#3}}% Denominator
}
这定义了命令\newfaktor{#1}[#2]{#3}[#4]
,其中#2
和分别#4
具有0.5
和的默认值-0.5
,并且和是可选的。这些可选参数指定分子#1
和分母#3
上升/下降的分数高度/深度。也就是说,0.5
指定#2
加薪 #1
其正常高度的一半;指定-1
为#4
滴 #3
按其自身高度计算。例如:
在上图中,前四次使用 产生的\newfaktor
排版效果等同于\faktor
。
为了满足第二个要求——\diagup
根据其参数自动缩放——我们必须走一条不同的路线。这样做的原因是缩放\diagup
发生在二维空间中,因此会变得更\diagup
胖。例如,请参见以下两者之间的区别:
因此,我选择拉伸内置\rule
于以下宏中的:
\DeclareDocumentCommand{\newfaktor}{s m O{0.5} m O{-0.5}}{% \newfaktor[*]{#2}[#3]{#4}[#5] -> #2/#4
\setbox0=\hbox{\ensuremath{#2}}% Store numerator
\setbox1=\hbox{\ensuremath{\diagup}}% Store slash /
\setbox2=\hbox{\ensuremath{#4}}% Store denominator
\raisebox{#3\ht1}{\usebox0}% Numerator
\mkern-5mu\ifthenelse{\equal{#1}{\BooleanTrue}}% Slash /
{\diagup}% regular \faktor slash
{\rotatebox{-44}{\rule[#5\ht2]{0.4pt}{-#5\ht2+#3\ht0+\ht0}}}% tilted rule as a slash
\mkern-4mu%
\raisebox{#5\ht2}{\usebox2}% Denominator
}
这\newfaktor
与之前一样创建,但现在带有可选的*
。带星号的版本\newfaktor*
恢复为旧定义,使用\diagup
作为倾斜分数,而无星号的版本\newfaktor
绘制\rule
并将其倾斜到位。考虑差异:
当然,如果这些定义完全令人满意的话,您可以根据自己的喜好进行更改。