나는 자주 뭔가를 시험해보고 일이 왜 그렇게 작동하지 않는지 알아보기 위해 약간의 성찰을 합니다. 상자를 사용하고 너비, 높이 및 깊이를 얻는 것은 이것의 필수적인 부분입니다.
이것은 일시적인 해킹 문제이므로 먼 길을 갔는지 궁금합니다 \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}
정말 격려할 수 없습니다!
Knuth는 특정 수의 레지스터를 숫자로 액세스할 수 있는 스크래치 공간으로 사용할 수 있도록 하는 체계를 마련했습니다. 관례적으로 0부터 9까지의 짝수 레지스터는 스크래치 공간으로 사용되고 로컬로 설정될 수 있는 반면, 같은 범위의 홀수 레지스터는 전역 스크래치 공간입니다. 그러나 매우 낮은 수준을 제외하면 명명된 스크래치 공간을 사용하는 것이 훨씬 더 일반적입니다. \@tempboxa
예를 들어 LaTeX에서는 사용할 수 있습니다.
모든 레지스터를 숫자로 직접 사용할 수 있지만 다른 코드에 동일한 레지스터에 할당된 이름이 있을 수 있고 현재 무엇을 하고 있는지 알 수 없기 때문에 잠재적으로 문제가 발생할 수 있습니다. 새 상자 이름을 만들지 않고 자료를 유연하게 저장하려면 자신만의 '풀' 상자를 정의하는 것이 좋습니다.
여기에서 상위 수준 LaTeX 구문의 전체 요점은 문서 작성자에게 도구를 제공하는 것이며 일반적으로 자료에 대한 전용 명명 공간을 갖는 것이 가장 좋은 접근 방식입니다.