我被这个小而烦人的问题困住了。我试图使用一个\write18
命令,其中我使用了一个局部变量\mytest
。我真的不明白为什么如果我注释这两个和,这个 SWE 会起作用,\begin{frame}
而\end{frame}
如果我使用它们,它却不起作用。此外,如果我在语句中使用\jobname
in place of,它就会起作用。\mytest
\write18
有人有想法吗?
\documentclass{beamer}
\makeatletter
\newcommand{\print}[1]{
\def\mytest{#1}
\mytest
\write18{echo;echo my test is \mytest\ }
}
\makeatother
\begin{document}
\begin{frame}{}
\print{hello world}
\end{frame}
\end{document}
答案1
\write18
在 shipout 时执行,此时帧已经结束,因此的本地定义\mytest
已被丢弃。
如果你使用,\immediate\write18
你就会得到你想要的。当然,指令的执行次数与框架中的覆盖次数一样多,所以也许\only
应该使用指令。