ORG模式代码块链接(例如与其他代码块的结果)的结果中的内部链接和目标



我正在使用org-mode编写软件文档,其中api文档的功能,变量等是从代码的DOC串中自动提取的(恰好是通用LISP)。然后将此文档导出到HTML(我恰好是通过用OX-RST和sphinx进行重组文本进行的)。它在很大程度上就像直接与Python一起使用Sphinx,但具有ORG模式的所有功能,例如可执行的代码块。

只是简要显示了原则,我正在用Emacs LISP简化了下面的方法。我有一个代码块,可以提取函数的文档(使用Common Lisp的格式以及使用:结果输出RAW i避免在结果中避免围绕双引号,但为简单起见我将它们留在下面的简短演示中)。

#+name: function-doc
#+begin_src emacs-lisp :results output raw :exports results :var name='list
  (print (documentation name))
#+end_src

我然后用我要记录的函数调用该代码块,并且在导出期间,此调用将替换为结果文档。

#+CALL function-doc(name:'map)

自动插入导出文件的 map 的结果文档恰好是以下内容。

"Map a FUNCTION across one or more SEQUENCEs, returning a sequence.
TYPE is the sequence type to return.
(fn TYPE FUNCTION SEQUENCE...)"

我可以在我的DOC串中使用org-mode格式,并按预期导出此类格式。

现在是我的问题。我想在其他功能的doc-strings中使用 links 到API条目(例如,函数的文档),变量等。从主文本内部(即未自动插入的文本)。自动插入功能名称的目标很容易,我只需要在上面延伸我的代码块 function-doc 。但是,在出口过程中找不到这些目标。即使我对 my-inction 的文档的目标自动添加了上面的代码块 function-doc ,当我插入org-mode link [[我的功能]] 到该功能,org-mode用以下错误中断导出。

user-error: Unable to resolve link: "MY-FUNCTION" 

有什么方法可以解决此限制?在导出过程中,有什么方法可以在ORG模式"看到" ORG模式代码块中的目标?

我已经尝试了各种解决方法,但是到目前为止没有成功。例如,我尝试使用org-mode宏代替代码块,但是要获得多行宏观结果非常棘手(在定义ORG模式宏中报告的技巧对我来说是不够的)。我正在寻找一种将有关未解决链接的错误消息转换为警告的方法,但是我发现的只是标记损坏链接的选项,如下所示。有什么方法可以出口和忽略(看似)断开的链接?

#+OPTIONS: broken-links:mark 

我还考虑首先将我的组织文件自动导出到一个已经插入的所有代码块结果的组织,以便组织模式可以看到链接的所有目标,但是显然将组织文件导出到ORG模式也是(看似)断开的链接不可能。

有帮助吗?多谢!

仅使用sphinx的重组文本导出时,我可以使用以下链接。这里的另一个好处是,第一个链接是情况不敏感的,与org-mode链接不同。

See also @@rst:`my-function`_@@.

如果我想导出多种格式,那么我可以定义一个生成上面链接的org模式宏以及其他导出格式的链接。

最新更新