Давайте попробуем понять, как работает TeX.Что происходит, когда вы пишете следующее?
tex.exe myfile.tex
TeX читает ваш файл побайтно.Прежде всего, TeX конвертирует каждый символ в пару <category, ascii-code>
.Каждый символ имеет код категории и код ASCII.Код категории означает, что символ является открывающей скобкой ({
) или входом в математический режим ($
), символом-макросом (например, ~
) или буквой (A-Z
, a-z
).
Если TeX получает символы с кодом категории 11 (буквы) или 12 (другие символы: цифры, запятая, точка), TeX начинает абзац.Вы хотите кэшировать все абзацы.
Предположим, вы что-то изменили в своем документе.Как TeX может проверить, что все абзацы после ваших изменений одинаковы?Может быть, вы изменили категорию какого-нибудь персонажа.Мне бы ты изменил смысл какого-то макроса.Или вы удалили }
где-то и таким образом изменили текущий шрифт.
Чтобы быть уверенным, что абзац одинаков, вы должны быть уверены, что все символы в абзаце одинаковы, что все символыКатегории одинаковы, текущий шрифт одинаков, все математические шрифты одинаковы, а значения некоторых внутренних переменных одинаковы (например, \hsize
, \vsize
, \pretolerance
, \tolerance
, \hypenpenalty
, exhyphenpenalty
, \widowpenalty
, \spaceskip
, ..., ........)
Вы можете быть уверены только в том, что все пометки перед вашими изменениямитак же.Но в этом случае вы должны сохранять все состояния после каждого абзаца.
Ваша система SuperCachedTeX
очень сложна.Не так ли?