То, с чем вы здесь сталкиваетесь, является проблемой определения объема. В (La) TeX вы можете ввести области действия с { ... }
, \bgroup ... \egroup
или \begingroup ... \endgroup
. Первые два примерно одинаковы, поскольку \bgroup
и \egroup
определены как \let\bgroup{
и \let\egroup}
; последний немного отличается. Но свойство области видимости одинаково: любые команды, блоки и т. Д., Созданные или измененные в этих областях, не видны снаружи. А в LaTeX все среды \begin{env} ... \end{env}
неявно переносят свое содержимое в \begingroup ... \endgroup
. Это означает, что ваша модификация \sbox{\somebox}{Some text}
видна только до \end{itemize}
; после этого модификация отменяется. Чтобы обойти это, добавьте любую команду, например \newcommand
, \def
, \newsavebox
, \sbox
и т. Д., С \global
, что заставляет определение иметь место в глобальной области видимости и быть видимым везде.
Также, чтобы использовать кавычки в (La) TeX, напишите ``double quoted''
, ``double quoted"
или `single quoted'
; символ "
предназначен только для закрытия кавычек, а не для открытия кавычек. Собрав все это вместе, вы получите исправленный фрагмент
\documentclass{article}
\begin{document}
\newsavebox{\somebox}
\begin{itemize}
\item hello1
\item hello1 \global\sbox{\somebox}{Some text}
\end{itemize}
This should show something, and in fact does: ``\usebox{\somebox}''
\end{document}