Как пропустить \newsavebox?

Как пропустить \newsavebox?

Я часто пробую разные штуки и делаю небольшой самоанализ, чтобы выяснить, почему вещи (не) работают так, как они работают. Использование ящиков и получение их ширины, высоты и глубины является неотъемлемой частью этого.

Так как это временная хакерская штука, мне интересно, стоит ли мне идти долгим путем \newsavebox{\blah}\setbox{\blah}{content}. Ящики IIRC похожи на регистры и они пронумерованы. Так что я думаю, что могу пропустить \newsaveboxи просто \savebox{16}{content}.

Верна ли догадка выше?

Если это действительно работает таким образом, какое относительно безопасное число использовать, например

Как латекс выдает номера коробок?

0-255 или 255-0. На днях я заметил, что ячейки 0 и 255 имеют особое значение и их лучше не трогать.

Существуют ли для таких целей предопределенные поля, куда никогда не нужно помещать контент, который вы хотите использовать повторно в дальнейшем?

решение1

Система распределения блоков LaTeX унаследована от простого TeX, поэтому в обоих случаях применяются одни и те же правила. Блоки, как и другие регистры, имеют номера и, как вы видите, могут быть адресованы таким образом. На самом деле это примитивный синтаксис, а не синтаксис LaTeX, поэтому

\setbox0=\hbox{content}

можно использовать на низком уровне, но

\savebox{0}{content}

на самом деле не стоит поощрять!

Кнут изложил схему, позволяющую сделать определенное количество регистров доступными в качестве временного пространства, к которому можно получить доступ по номеру. По соглашению, четные регистры от 0 до 9 могут использоваться в качестве временного пространства и устанавливаться локально, в то время как нечетные регистры в том же диапазоне являются глобальным временным пространством. Однако, за исключением очень низкого уровня, гораздо более привычно использовать именованное временное пространство: \@tempboxaдоступно в LaTeX, например.

Вы можете использовать любой регистр напрямую по номеру, но вы потенциально можете попасть в беду, так как другой код может иметь выделенное имя для того же регистра и не будет знать, что вы делаете. Я бы настоятельно рекомендовал определять собственные ящики «пула», если вы хотите иметь некоторую гибкость в сохранении материала без создания новых имен ящиков.

Обратите внимание, что вся суть синтаксиса LaTeX более высокого уровня здесь заключается в предоставлении инструментов авторам документов, тогда как обычно наличие выделенного именованного пространства для материала является наилучшим подходом.

Связанный контент