发生错误时 Lua 可以访问回溯/周围的标记吗?

发生错误时 Lua 可以访问回溯/周围的标记吗?

假设我有...

\documentclass{article}
\errorcontextlines=10000
\def\c{1 \errorerror 2}
\def\b{3 \c 4}
\def\a{5 \b 6}
7 \a 8

我可以

  • 查看控制台上的回溯......

    ! Undefined control sequence.
    \c ->1 \errorerror
                       2
    <argument> 3 \c
         4
    \b #1->7 #1
                8
    \a ->5 \b {3 \c 4}
                       6
    l.13 7 \a
            8
    
  • 发生错误时运行一些代码(show_error_hook回调)...

  • 访问错误消息的字符串内容status.lasterrorcontextstatus.lasterrormessage

  • 通过重复调用获取以下令牌token.get_next()

然而我可以做以下事情吗

  • 获取未定义标记的 csname(以编程方式)?解析错误消息不可靠。
  • 获取周围的内容(例如“before is 5 3 1”)?
  • 获取实际的回溯中的宏(在本例中为 a、b、c)以及它们当前位于定义中的什么位置?

就上下文而言,有时错误消息无法在终端上很好地显示(仅限于文本输出,因此例如无法区分活动空间和正常空间/a小的列数),所以我想获取标记并将其格式化为更漂亮的格式。

相关内容