我使用组织模式编写软件文档,其中函数、变量等的API文档自动从代码的文档字符串(在公共Lisp中)中提取。然后将这些文档导出到HTML (我碰巧通过reStructuredText与牛rst和狮身人面像一起完成了这一工作)。它的工作原理很大程度上类似于直接与Python一起使用Sphinx,但也适用于组织模式的所有特性,比如可执行代码块。
为了简单地展示这个原理,我在下面的Emacs中演示了一种简化的方法。我有一个代码块,它提取函数的文档(使用Common的格式并使用:结果输出raw,我避免了结果中的双引号,但为了简单起见,我将它们放在下面的简短演示中)。
#+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 a FUNCTION across one or more SEQUENCEs, returning a sequence.
TYPE is the sequence type to return.
(fn TYPE FUNCTION SEQUENCE...)"我可以在我的文档字符串中使用组织模式格式,并按预期导出这种格式。
现在来了我的问题。我想使用将链接到API条目(例如函数的文档),在其他函数、变量等的文档字符串中,以及在主文本中(即不自动插入的文本)。用函数的名称自动插入目标是很容易的,我只需要相应地扩展我的代码块函数-doc。然而,在出口过程中找不到这些目标。即使我的函数文档中的目标与上面的代码块函数-doc一起自动添加,当我插入到该函数的org模式链接[ documentation ]时,org模式也会以以下错误中断导出。
user-error: Unable to resolve link: "MY-FUNCTION" 有什么办法可以绕过这个限制吗?在导出过程中,组织模式代码块的结果中的目标是否可以被组织模式“看到”?
我已经尝试过各种解决办法,但到目前为止都没有成功。例如,我尝试使用org模式的宏而不是代码块,但是要有多行宏结果是非常棘手的(在定义带有换行符的org模式宏上报告的技巧对我来说还不够)。我正在寻找一种方法来将关于未解决的链接的错误消息转换为警告,但我发现的所有选项是标记断开的链接,如下所示。有什么方法可以输出或者忽略(表面上的)断裂的链接?
#+OPTIONS: broken-links:mark 我还考虑首先将我的org文件自动导出到一个已经插入了所有代码块结果的组织中,这样org模式就可以看到链接的所有目标,但是很明显,如果链接(表面上看上去)中断,将一个org文件导出到org模式也是不可能的。
有什么帮助吗?非常感谢!
发布于 2017-09-21 23:58:05
当只对狮身人面像使用reStructuredText导出时,我可以使用内联rST链接,如下所示。这里的另一个好处是rST链接不区分大小写,不像组织模式链接。
See also @@rst:`my-function`_@@.如果我想要导出成多种格式,那么我可以定义一个组织模式宏,它生成上面的rST链接,以及其他导出格式的链接。
https://stackoverflow.com/questions/46354012
复制相似问题