扩展 faktor 包

扩展 faktor 包

我正在写一个脚本(主题环理论),其中我必须设置许多代数对象的商。通常我只是简单地写M/N。然而,有些情况下这并不容易阅读(M+N/N或诸如此类)。所以我想将第一个对象设置得高一点,将第二个对象设置得低一点。我发现因素包可以做到这一点。然而 faktor 使用的\diagup是固定大小。对于较大的表达式,较大的表达式似乎更合适。你知道我如何更改包的源代码以便

  1. 我有两个命令(一个带有小斜线,一个带有大斜线)或更好
  2. 自动\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 错误跟踪系统上的评论建议交换mathtoolsxfrac。这在我的系统上有效。但是 -environment 中的公式gather*对我来说太小了: 例如 \sfrac

这里的字体大小似乎比内联文本小。这就是我想尝试的原因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

\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胖。例如,请参见以下两者之间的区别:

\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并将其倾斜到位。考虑差异:

修改了 \newfaktor,使其具有较大的斜线

使用带星号/不带星号 \newfaktor 的较长方程式

当然,如果这些定义完全令人满意的话,您可以根据自己的喜好进行更改。

相关内容