例如, 需要一个环境 Foo, 使得
\begin{Foo}
some source code
\end{Foo}
得到:
=========== some source code =========== code result(image) ===========
关键是 verbatim 的问题
我曾经在 CTeX 上发贴求助, 最后还是在别人提示下找到方法.
ctex-faq.sty 里将代码写到一个文件里, 再 input 进来实现的.
仔细看了 eTeX 文档, 发现 \scantokens 可以不用文件操作得到类似的效果.
代码片段:
\newenvironment*{AsyExample}[1][type=SR]{%
\stepcounter{asy}%
\setkeys[pt]{AsyExample}{#1}%
\edef\AsyExampleSize{\AsyExampleSize}
\begingroup
\@bsphack
\let\do\@makeother\dospecials\catcode`\^^M\active
\AsyExample@toks={}
\def\verbatim@processline{% \expandafter\addto@hook\expandafter\AsyExample@toks\expandafter{\the\verbatim@line^^J}
}%
\verbatim@start}{%
\@esphack
\global\AsyExample@toks\AsyExample@toks
\endgroup
\AsyExample@Source
\AsyExample@Result
}
然后在 \AsyExample@Source 等里显示或扫描 \AsyExample@toks 即可.
No comments:
Post a Comment