Frequentemente experimento coisas e faço uma pequena introspecção para descobrir por que as coisas (não) funcionam da maneira que funcionam. Utilizar caixas e obter sua largura, altura e profundidade é parte integrante disso.
Como isso é algo hacky temporário, eu me pergunto se já percorreu um longo caminho para \newsavebox{\blah}\setbox{\blah}{content}
. As caixas IIRC são como registradores e são numeradas. Então acho que posso pular \newsavebox
e apenas \savebox{16}{content}
.
A suposição acima está correta?
Se funcionar dessa maneira, qual é um número relativamente seguro para usar, ou seja
Como o látex fornece números de caixas?
0-255 ou 255-0. Percebi outro dia que as caixas 0 e 255 têm algum significado especial e é melhor deixá-las sozinhas.
Existem caixas pré-definidas para tais fins, onde nunca é possível salvar para colocar o conteúdo que deseja reutilizar posteriormente?
Responder1
O sistema de alocação de caixas do LaTeX é herdado do TeX simples, portanto as mesmas regras se aplicam em ambos os casos. As caixas, como outros registros, possuem números e como você observa podem ser endereçadas dessa forma. Na verdade, esta é uma sintaxe primitiva, não uma sintaxe LaTeX, então
\setbox0=\hbox{content}
é utilizável em um nível baixo, mas
\savebox{0}{content}
realmente não deve ser encorajado!
Knuth apresentou um esquema para disponibilizar um certo número de registros como espaço de rascunho que pode ser acessado por número. Por convenção, registros pares de 0 a 9 podem ser usados como espaço de rascunho e definidos localmente, enquanto registros ímpares no mesmo intervalo são espaço de rascunho global. No entanto, exceto em um nível muito baixo, é muito mais comum usar espaço de rascunho nomeado: \@tempboxa
está disponível em LaTeX, por exemplo.
Você pode usar qualquer registro diretamente pelo número, mas poderá ter problemas, pois outro código pode ter um nome alocado para o mesmo registro e não saberá o que você está fazendo. Eu sugiro fortemente definir suas próprias caixas de 'pool' se você quiser alguma flexibilidade no salvamento de material sem criar novos nomes de caixas.
Observe que o objetivo da sintaxe LaTeX de nível superior aqui é fornecer ferramentas para autores de documentos, onde normalmente ter um espaço nomeado dedicado para material é de longe a melhor abordagem.