如何在 lhs2TeX 中投影 \alert 代码片段?

如何在 lhs2TeX 中投影 \alert 代码片段?

如何在 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

相关内容