Я часто пробую разные штуки и делаю небольшой самоанализ, чтобы выяснить, почему вещи (не) работают так, как они работают. Использование ящиков и получение их ширины, высоты и глубины является неотъемлемой частью этого.
Так как это временная хакерская штука, мне интересно, стоит ли мне идти долгим путем \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 более высокого уровня здесь заключается в предоставлении инструментов авторам документов, тогда как обычно наличие выделенного именованного пространства для материала является наилучшим подходом.