你在這裏遇到的是一個範圍界定問題。在(La)TeX中,您可以引入示波器{ ... }
,\bgroup ... \egroup
或\begingroup ... \endgroup
。前兩者大致相同,因爲\bgroup
和\egroup
由\let\bgroup{
和\let\egroup}
定義;最後一個稍有不同。但是範圍屬性是相同的:在這些範圍內創建或修改的任何命令,boxen等在外面都是不可見的。在LaTeX中,所有環境\begin{env} ... \end{env}
隱含地將其內容封裝在\begingroup ... \endgroup
中。這意味着您的\sbox{\somebox}{Some text}
修改只有在\end{itemize}
;之後,修改被撤消。爲了解決這個問題,可以使用\newcommand
,\def
,\newsavebox
,\sbox
等與\global
之前的任何命令,這會強制定義發生在全局範圍內,並在任何地方都可見。
此外,要在(La)TeX中使用引號,請編寫,``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}
感謝您的解釋。那'全球'確實是個伎倆 – 2010-06-02 15:08:56