定义一个 `\newenvironment`,将其内容存储在令牌寄存器或宏中

定义一个 `\newenvironment`,将其内容存储在令牌寄存器或宏中

在下面的代码中,我想定义一个新的环境来存储其内容,以便以后以不同的格式多次使用它

\documentclass{article}
  \newtoks\environmentcontents
   \newenvironment{myenv}{%
      %\environmentcontents=\bgroup
      }
     {%
      %\egroup
      }

\begin{document}
   \begin{myenv}
      some tokens here
    \end {myenv}


  % {\tiny \environmentcontents}

  Some text in between the same content

 % {\Large \environmentcontents}

\end{document}

答案1

我不太清楚你为什么想要 token,而不是例如只是\long\def输入所需的内容。但是,该tokcycle包用于收集和操作 token。在这种情况下,操作只是传递未改变的 token。因此,只要你没有指示包以不同的方式处理 token,myenv伪环境就会在 token 寄存器中收集你的 token \cytoks。我在 MWE 中做的最后一件事是重新整理 detokenized \cytoks,以便你可以验证它确实收集了原始(未扩展)的 token。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{tokcycle}
\def\myenv{\begingroup\let\endmyenv\endtokcycraw
  \aftertokcycle{\expandafter\endgroup\expandafter\tcenvscope
  \expandafter{\the\cytoks}}\tokcycrawxpress}
\begin{document}
   \myenv
      some tokens \textit{here}, \today
    \endmyenv

   {\tiny \the\cytoks}

  Some text in between the same content

  {\Large \the\cytoks}

\detokenize\expandafter{\the\cytoks}
\end{document}

在此处输入图片描述

相关内容