여기서 실행중인 것은 범위 지정 문제입니다. (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"
또는 `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}
설명해 주셔서 감사합니다. 그'\ global'은 실제로 트릭이었습니다. –