如何在 beamer 中突出显示 lhs2TeX 代码的特定范围?
简单示例(需要用 进行预处理lhs2TeX --agda
):
\documentclass{beamer}
%include agda.fmt
\begin{document}
\begin{frame}
\begin{spec}
somefunction : {-"\begin{alertenv}"-}importantaspect{-"\end{alertenv}"-}
secondline
\end{spec}
\end{frame}
\end{document}
编译这样的代码片段会失败,并显示以下信息:
./test.tex:308: Incompatible glue units.
\reset@color ->\beamer@lastskip =\lastskip
\edef \beamer@lastskiptexta {\the...
l.308 \end{frame}
答案1
在 Agda 模式下,警告区域包含 的出现\;
,如果你查看生成的代码就会发现:
\>[17]{}\begin{alertenv}\Varid{importantaspect}\;\end{alertenv}{}\<[E]%
这触发了错误(这是一个 muskip,显然有什么东西试图将它放入正常的 skip 寄存器中,从而导致不兼容错误;但是,我目前不完全明白谁应该负责)。有人可能会争辩说 lhs2TeX 不应该首先将 skip 放在那里。
我看到两种解决方法。
(1)放入另一个更容易理解的跳过部分:
somefunction : {-"\begin{alertenv}"-}importantaspect{-"\hskip0pt\end{alertenv}"-}
(2)使用不同的格式化机制避免插入跳过,例如
%format Importantaspect = "\alert{" importantaspect "}"
进而
somefunction : Importantaspect