不同的标签也总是被认为是不同的吗?

不同的标签也总是被认为是不同的吗?

继续LaTeX 标签:长度限制,不同的标签是否也总是被 (La)TeX 视为不同?假设两个标签适合buf_size池大小(并且涉及标签的相应行.aux也适合文件),这些标签是否也总是被视为不同?还是忽略大小写差异,如 BASIC 中一样(例如ABC= abc)?或者平等检查仅基于

答案1

\label{foo}本质上是\expandafter\def\csname r@foo\endcsname并且\ref{foo}本质上是\expandafter\somecommand\csname r@foo\endcsname 通过写入辅助文件与一些间接方式结合在一起,因此定义在运行之间仍然存在。

因此标签的规则通常只是 csnames 的规则。因此与环境名称或键的名称相同keyval...

答案2

来自errorlog.tex(PDF 版本可在 TeX Live 中找到)

在此处输入图片描述

TeX78 中控制序列名称的长度有一个界限(知道这个界限是什么并不重要),但 Knuth 意识到这是一个大问题。

在此处输入图片描述

在此处输入图片描述

如果 LaTeX 是为 TeX78 编写的(但事实并非如此),那么两个不同的标签可以被视为相等,因为 的目的\label是定义控制序列名称。另一方面,这样的任务对于 TeX78 来说是不可能的,因为 TeX78\csname于 1982 年 11 月 13 日推出:

在此处输入图片描述

因此,长度或任何字符(包括字母大小写)不同的标签被视为不同。

TeX 通常区分大小写。TeX 生态系统中的每个程序可能都不相同;例如,当涉及字段名称的输入类型时,BibTeX 不区分大小写:您可以输入

@book{...}
@BOOK{...}
@BoOk{...}

或者

author = {...},
Author = {...},
AUTHOR = ,

没有区别。

有些包可能会将只有字母大小写不同的键视为相同。例如,在usebib读取.bib文件时,就必须处理上述问题。

当然,如果标签太长,无法放入buf_sizepool_size则会收到“超出容量”错误,问题也就没有意义了。

相关内容