没有宏\vcoffin_gset:Nnw
。我怎样才能实现该结果?
平均能量损失
\documentclass{article}
\usepackage{expl3}\ExplSyntaxOn
\usepackage{mwe}
\newcommand\typesetit {\coffin_typeset:Nnnnn\l_tmpa_coffin{l}{T}{0pt}{0pt}}
\newenvironment{test} {\vcoffin_set:Nnw\l_tmpa_coffin{4in}}{\vcoffin_set_end:}
\newenvironment{test2}{\vcoffin_set:Nnw\l_tmpa_coffin{4in}}{\vcoffin_set_end:\typesetit}
\begin{document}
\begin{test}
\lipsum[1]
\end{test}
\typesetit % empty :(
\begin{test2}
\lipsum[1]
\end{test2}
\end{document}
答案1
经过一番考虑,特别是关于 box 范围的考虑,团队将expl3
在下一个版本中添加对全局 coffins 的支持(2019-01-24
)。(代码是在https://github.com/latex3/latex3/pull/525)全局棺材遵循与其他数据结构相同的模式,例如
\hcoffin_gset:Nn \g_my_coffin { Tokens }
答案2
我已经摆弄了 LaTeX3 棺材,但因为没有 而感到沮丧\vcoffin_gset:Nnw
。为此,我找到了这个有点怪异的解决方法。它的工作原理是将TypesetCoffin<\your coffin>
一个全球的 lrbox
(见下面的代码)。坦白说,我没想到这会起作用,但是,瞧!它似乎起作用了。这里的目标是创建一个棺材并使用其中的内容外部环境或群体。可能存在一些我所不知道的限制。
\documentclass{article}
\usepackage{xparse,xcoffins}
\usepackage{etoolbox}
\usepackage{lipsum}
\NewCoffin\MyTestCoffin
\newsavebox{\testingbox}
%% Thanks to egreg, makes glrbox global (requires etoolbox.sty):
%% https://tex.stackexchange.com/questions/43046/beamer-content-in-box-register-does-not-survive-endframe/43063#43063
\cslet{glrbox}\lrbox
\expandafter\patchcmd\csname glrbox\endcsname{\setbox}{\global\setbox}{}{}
\cslet{endglrbox}\endlrbox
\ExplSyntaxOn
\newcommand\typesetit{\usebox{\testingbox}}% <<- Redifined.
\newenvironment{test} {%
\vcoffin_set:Nnw\l_tmpa_coffin{4in}
}{%
\vcoffin_set_end:
\begin{glrbox}{\testingbox}{\TypesetCoffin\l_tmpa_coffin}\end{glrbox}%
}
\newenvironment{testi}{%
\vcoffin_set:Nnw\l_tmpa_coffin{4in}
}{%
\vcoffin_set_end:
\coffin_typeset:Nnnnn\l_tmpa_coffin{l}{T}{0pt}{0pt}%
}
\ExplSyntaxOff
\begin{document}
\begin{test}
This is the first one.
\lipsum[1]
\end{test}
\typesetit % Not empty :)
\bigskip
\begin{testi}
Blabla bla.
\lipsum[1]
\end{testi}
\end{document}
欢迎评论。