郑州市卫计委付桂荣:Tex源码笔记(三)
来源:百度文库 编辑:九乡新闻网 时间:2024/10/06 14:04:18
Tex源码笔记(三)
Tex处理用户写入的代码采用的方式是一次读入一行,每次读入后放到缓冲buffer中:
buf_size=500;{缓冲大小}
buffer: array[0..buf_size]of ASCII_code;{缓冲数组}
first:0..buf_size;{缓冲中第一个未用元素下标}
last:0..buf_size;{输入缓冲中的文本行行尾下标}
max_buf_stack:0..buf_size;{缓冲中使用的最大索引下标}
该数据结构的图示以后上传。
为了理解该数据结构,我们需要看一下Tex是如何使用缓冲的。这就需要看一下Tex中比较重要的一个函数input_ln,该函数用于从目标文件中读入一行:
{该函数用于从f中读入一行,忽略行尾空格}
function input_ln(varf:alpha_file;bypass_eoln:boolean):boolean
varlast_nonblank:0..buf_size;
begin
if bypass_eolnthen {跳过换行符}
if!eof(f) then get(f);
last=first;
if last>=max_buf_size then
end;
我们可以看出:
(1)读入的数据会放在buffer[first]..buffer[last-1];
(2)buffer[last-1]不等于空格。变量last_nonblank用于跟踪最后一个非空格的字符;
(3)该函数当文件结束时返回false,否则返回true;
(4)max_buf_stack用于记录暂时可以提供的最大缓冲下标,当不够用时可以增大,但该值必须严格小于buf_size,这是因为Tex会在读入行的最后添加一个字符,即\endlinechar。
读入一行文本后Tex就可以开始处理该行文本了,在这个过程中变量loc指向当前要处理的字符位置:
define loc=cur_input.loc_field;
其中变量cur_input为关于当前要处理的文本的一些信息,当然当前要处理的字符位置为该信息之一。显然我们有loc
Tex源码笔记(三)
Tex
三代高手及选股源码(副图 源码)
三代高手及选股源码(副图 源码)tdx
TeX字体文件概要
内核网络源码学习笔记:arp_send()函数分析。
十七届中央纪委第六次全会学习笔记(三)
主力密码线技术★江恩八线技术及通用源码(三)
GEF源码分析(三) GEF 的树状构架 ___ Model/EditPart/Figure
通达信]三浪启动 主副图指标源码
三浪启动 主副图指标源码
三均会师选股公式源码
《婚姻法司法解释三》学习笔记
排版软件TEX/LATEX入门
明人笔记之三 -- 明人笔记 -- 国学珍藏
GEF源码分析(三) 模拟GEF设计思路,解剖GEF2 附图:包含GEF的Editor创建时序图
百年程氏养生经(三)(养生堂笔记)
【引用】高三经典纠错笔记:语文
高三经典纠错笔记:化学
2011高考实用英语语法笔记(三)
高三经典纠错笔记:语文
百个选股小公式(源码)
进攻涨停(主图 源码)
排版软件TEX/LATEX入门1