TeX 无穷数的数学描述?

TeX 无穷数的数学描述?

TeX 有诸如无限可拉伸空间和无限坏惩罚之类的东西。由于 Knuth 就是 Knuth,我认为这些都是经过深思熟虑的实现,可以很好地定义非阿基米德数字系统,并且他有充分的理由选择该特定的数字系统而不是其他系统(例如某些更丰富或更弱的系统)。

它是什么数字系统?它有无穷级数吗?它有可逆无穷级数吗,就像列维-奇维塔场

答案1

TeX 的胶合维度,包括无限维度filfillfilll,缺少以下结构/属性:

  • 取消:因为1pt + 1fil = 1fil根据规则,胶合甚至不是加法组。当然,你可以写成1pt plus 1fil,但这意味着完全不同的东西,正如 Heiko 所解释的那样。

  • 乘法:不能用其他胶水乘以胶水。好吧,你可以将 a 向下转换skip为 a dimen,并将其解释为 的倍数1sp,你将另一个跳过(粘连)乘以该整数。顺便说一下,根据这种解释,1fil = 0因为在转换后的粘连基值中不可能无限延伸。

我不知道有任何数学结构包括“无穷大”,既没有取消,又允许实数作为值。例如,超实数有无穷大,但1 + \omega \neq \omega。序数更接近,但加法不是交换的(虽然我们有1 + \omega = \omega),而在 的版本中是交换的(自然添加) 我们有1 + \omega \neq \omega

我犹豫是否称之为结构的一个数量系统是大 O 符号给出的渐近线目录。看来 Knuth 的胶水确实遵循多项式层次结构的前四个级别:pt = O(1)fil = O(n)fill = O(n^2)filll = O(n^3)。我们在添加时会跟踪乘数,但不跟踪低阶项。在这种标识下,我们fil * fill = filll,或者至少是O(filll),但那和fil^2是我们唯一能带的产品,所以似乎不值得。

鉴于 Knuth 作为算法分析的先驱而闻名,这可能是最有可能的,但即便如此,我也不会过多考虑。他清楚地实现了小学的无穷大算术:你知道,“无穷大 = 无穷大加一”和“无穷大平方 > 无穷大”,这在三年级的食堂里争论不休。

答案2

\documentclass[a4paper]{amsart}

\newcommand{\numberset}[1]{\mathbf{#1}}
\newcommand{\Z}{\numberset{Z}}

\begin{document}
\title{A mathematical description of \TeX{} glue}
\author{egreg@\TeX.SX}
\address{\texttt{tex.stackexchange.com}}

\maketitle

Let $\Z$ be the additive group of integers. We shall disregard the fact that
\TeX{} can only deal with a finite subset of $\Z$, because this is just
incidental.

Consider the set $\Z^{7}$ and denote the projections on the components
by $n$, $S_1$, $S_2$, $S_3$, $s_1$, $s_2$ and $s_3$ respectively.

The set $G$ of \emph{glues} is defined as the subset of $\Z^{7}$ consisting 
of the tuples $x\in\Z^{7}$ such that at most one among $S_1(x)$, $S_2(x)$, 
$S_3(x)$ is nonzero and at most one among $s_1(x)$, $s_2(x)$, $s_3(x)$ is 
nonzero. An element of $\Z^{7}$ is called a \emph{preglue}.

For $x\in\Z^{7}$, we set
\[
O(x)=
\begin{cases}
0 & \text{if $S_1(x)=S_2(x)=S_3(x)=0$}\\
1 & \text{if $S_1(x)\ne0$, $S_2(x)=S_3(x)=0$}\\
2 & \text{if $S_2(x)\ne0$, $S_3(x)=0$}\\
3 & \text{if $S_3(x)\ne0$}
\end{cases}
\]
and call $O(x)$ the \emph{stretching order} of the glue~$x$. Similarly
\[
o(x)=
\begin{cases}
0 & \text{if $s_1(x)=s_2(x)=s_3(x)=0$}\\
1 & \text{if $s_1(x)\ne0$, $s_2(x)=s_3(x)=0$}\\
2 & \text{if $s_2(x)\ne0$, $s_3(x)=0$}\\
3 & \text{if $s_3(x)\ne0$}
\end{cases}
\]
is the \emph{shrinking order} of the preglue~$x$. We finally define
the function $\gamma\colon\Z^{7}\to G$ by
\begin{enumerate}
\item $n(\gamma(x))=n(x)$;
\item $S_k(\gamma(x))=0$ if $k<O(x)$ or $k>O(x)$ ($k=1,2,3$);
\item $S_k(\gamma(x))=s_k(x)$ if $k=O(x)$ ($k=1,2,3$);
\item $s_k(\gamma(x))=0$ if $k<o(x)$ or $k>o(x)$ ($k=1,2,3$);
\item $s_k(\gamma(x))=s_k(x)$ if $k=o(x)$ ($k=1,2,3$).
\end{enumerate}

We define an operation $\oplus$ on $G$ by defining, for $x,y\in G$,
\[
x\oplus y=\gamma(x+y)
\]
where $+$ denotes the componentwise addition in $\Z^{7}$.

The reader should work out the following exercises:
\begin{enumerate}
\item $G$ has a neutral element $0$;
\item for every $x\in G$ there is $y\in G$ such that $x\oplus y=0$;
\item the operation $\oplus$ is commutative;
\item the operation $\oplus$ is not associative.
\end{enumerate}

In spite of the fact that $\oplus$ is not associative, we can define 
an action of the integers on $G$; if $a$ is an integer and $x\in G$,
we simply consider $ax$ in the usual sense for the abelian group
$\Z^{7}$, as $\gamma(ax)=ax$. 

Final exercise: the set of glues with a fixed stretch order and fixed 
shrink order is a group under $\oplus$, isomorphic to $\Z$, 
$\Z^{2}$ or $\Z^{3}$.

\end{document}

在此处输入图片描述

重要的提示

这描述的是寄存器\advance上的操作\skip,而不是 TeX 在构建框时所做的操作。对于后者,工作有所不同:

When \TeX{} is building a box (vertical or horizontal), it computes 
the available natural width, stretching component and shrinking component
by doing
\[
\gamma(g_1 + g_2 + \dots + g_n)
\]
not by using the $\oplus$ operation, where $g_1,g_2,\dots,g_n$ are the
available glues in the box.

在此处输入图片描述

答案3

胶水是数字的元组:

  • 基值
  • 收缩组件 ( \glueshrink)
  • 缩水订单 ( \glueshrinkorder)
  • 拉伸分量 ( \gluestretch)
  • 拉伸顺序 ( \gluestretchorder)

这些\glue...命令由 e-TeX 提供。

TeX 将尺寸存储为带单位的数字sp。仅用于打印时,该值才转换为pt:1 pt = 2 16 sp = 65536 sp。

基准值和收缩和拉伸分量存储为尺寸。

收缩和拉伸组件的顺序被编码为数字:

  • 0 = 分
  • 1 = 文件
  • 2 = 填充
  • 3 = 填充

例子:

\def\msg#{\immediate\write16}
\def\printglue#1{%
  \begingroup
    \skip0=#1\relax
    \msg{skip = \the\skip0}%
    \msg{[dimen] \number\skip0 sp = \the\dimexpr\skip0\relax}%
    \msg{[minus] \number\glueshrink\skip0 sp = \the\glueshrink\skip0}%
    \msg{[minus] order: \the\glueshrinkorder\skip0 \space= %
                  \printorder{\glueshrinkorder\skip0}}%
    \msg{[plus] \space\number\gluestretch\skip0 sp = \the\gluestretch\skip0}%
    \msg{[plus] \space order: \the\gluestretchorder\skip0 \space= %
                  \printorder{\gluestretchorder\skip0}}%
  \endgroup
}
\def\printorder#1{%
  \ifcase\numexpr(#1)\relax
  pt\or fil\or fill\or filll\else unknown\fi
}

\printglue{10pt plus 1.2fill minus 0.7pt}

\csname @@end\endcsname\end

结果:

skip = 10.0pt plus 1.2fill minus 0.7pt
[dimen] 655360sp = 10.0pt
[minus] 45875sp = 0.7pt
[minus] order: 0 = pt
[plus]  78643sp = 1.2pt
[plus]  order: 2 = fill

因此该值可以被视为整数元组:(65536、45875、0、78643、2)。

相关内容