\ sbox изнутри среды - PullRequest
       13

\ sbox изнутри среды

2 голосов
/ 01 июня 2010

Я пытаюсь сохранить текст внутри среды для последующего использования. Самый маленький тестовый пример, который я мог придумать, это. Сохраненный текст в sbox недоступен после закрытия среды. Как я могу обойти это? Благодаря.

\documentclass{article}
\begin{document}
\newsavebox{\somebox}
\begin{itemize}
\item hello1
\item hello1 \sbox{\somebox}{Some text}
\end{itemize}
This should show something, but does not: "\usebox{\somebox}"
\end{document}

Ответы [ 2 ]

2 голосов
/ 02 июня 2010

То, с чем вы здесь сталкиваетесь, является проблемой определения объема. В (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}
1 голос
/ 01 июня 2010

Я думаю, что могу обойти это, используя \def. вот так:

\ documentclass {статья} \ Начать {документ} \ {Начать детализировать} \ item hello1 \ item hello1 \ global \ def \ somebox {Некоторый текст} \ Конец {классифицируют} Это должно показать что-то: \ somebox \ Конец {документ}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...