我在寻找什么来调试这个elisp?

时间:2014-04-22 20:54:32

标签: emacs latex elisp org-mode beamer

我有一个org-mode文件,我正试图通过XeTeX导出到Beamer LaTeX PDF。它昨晚在这台机器上工作得很好,就在我之后编辑它的另一台机器上也是如此。两者都运行org-mode 8,Emacs 24,相同的导出过程(XeLaTeX的3次运行)

当我同步回这台机器并尝试再次导出时,我收到错误Wrong block type at a headline named ""。我检查了所有的标题并给了他们所有的名字,但仍然得到了相同的结果。

感谢索引可搜索的FLOSS代码的奇迹,我立即在网上找到了该代码段:

(env-format
      (cond ((member environment '("column" "columns")) nil)
        ((assoc environment
            (append org-beamer-environments-extra
                org-beamer-environments-default)))
        (t (user-error "Wrong block type at a headline named \"%s\""
                   raw-title))))
但是,我在elisp上并不是很坚固,而且我不知道这里发生了什么。从这个片段,我该怎么做才能开始调试? (我意识到我可以启动emacs调试器,但它不是PKE meter,我不能只是挥动它。)

2 个答案:

答案 0 :(得分:2)

当您发现相关的代码段时,IMHE找出错误的最佳方法是使用Edebug

您应该阅读文档以了解更多信息,但基本上这是我的程序:

  1. 识别崩溃的代码部分
  2. 使用Edebug检测代码( C-u C-M-x
  3. 重新执行代码并一步一步地弄清楚发生了什么( n
  4. 如果问题出在另一个功能中,请跳转到GOTO 2。
  5. 迭代,直到您了解代码并找到修复方法。


答案 1 :(得分:0)

发布此答案只是为了理解错误标记的特定问题的特定解决方案。

显然我在另一台机器上的Beamer版本有一个"正常" Beamer环境,指定其他空白,未格式化的块。这台机器的安装不存在,或至少org / XeLaTeX不了解它。

我的步骤是:

  1. 搜索所有未命名的标题
  2. 为每个人唯一命名
  3. 使用识别字符串
  4. 重现错误
  5. 根据org-beamer-mode
  6. 中给出的可用类型列表检查块类型属性
  7. 删除有问题的类型并将其替换为另一个

  8. 这很好,但我不认为这是最好的答案"因为它没有真正了解emacs解释器试图告诉我的内容。如果我对TeX的一般情况并不了解,那么它就无法发挥作用。 Dunno,如果这种技术会在面试中给任何人留下深刻的印象;)