目前发现问题是,在导出文本中,那个internal link信息会完全丢失。 比如:
这是一个指向[[*heading][display text]]的链接
会导出成:
这是一个指向的链接
这种情况下,期待的输出是(即:如果heading在当前subtree外,则忽略,但是保留display text):
这是一个指向display text的链接
目前发现问题是,在导出文本中,那个internal link信息会完全丢失。 比如:
这是一个指向[[*heading][display text]]的链接
会导出成:
这是一个指向的链接
这种情况下,期待的输出是(即:如果heading在当前subtree外,则忽略,但是保留display text):
这是一个指向display text的链接
有最小例子吗,zsbd
当 org-export-with-broken-links
为 nil
时,如果指向 headline 不存在应该不能正常导出,当它非空时如果链接破损会被忽略掉:
org-export-with-broken-links is a variable defined in ‘ox.el’.
Its value is nil
Non-nil means do not raise an error on broken links.
When this variable is non-nil, broken links are ignored, without
stopping the export process. If it is set to ‘mark’, broken
links are marked as such in the output, with a string like
[BROKEN LINK: path]
where PATH is the un-resolvable reference.
如果设定为 mark,则导出得到类似效果:
<p>
这是一个指向[BROKEN LINK: *heading]的链接</p>
可以考虑 hack 一下 org-export-data
:
(cl-macrolet
((broken-link-handler
(&rest body)
`(condition-case err
(progn ,@body)
(org-link-broken
(pcase (plist-get info :with-broken-links)
(`nil (user-error "Org export aborted. Unable to resolve link: %S\nSee `org-export-with-broken-links'" (nth 1 err)))
(`mark (org-export-data
(format "[BROKEN LINK: %s]" (nth 1 err)) info))
(_ nil))))))
...
这时候可以用 #+INCLUDE 语法直接将其它地方的文本包含到你要输出的文档里。
您好,我基本不懂elisp. 请教, 对于一个[[link][description]]格式的链接, 如何修改org-export-data, 使得在org-export-with-broken-links 设定为’mark时,直接输出为description? 链接的description信息能够在err中获得吗?
(`mark (org-export-data (format “[BROKEN LINK: %s]” (nth 1 err)) info))
您好, 用include可能和我的使用场景不太符合. 我目前主要使用两种格式的链接,基本用于文档内前后相关文意的跳转:
Occur 了一下,org-link-broken
错误的产生者还不少,而且大部分只提供了 id 相关信息,反倒是没有链接文本的信息,可以考虑修改这些 singal
错误的函数来携带文本信息并在 org-export-data
中处理。
不过,这应该不是 Org 推荐的做法,出现了引用错误应该尽快解决掉。
你可以会。
好,谢谢。 我这个场景其实不是链接有问题,链接本身是可以跳转的。只是说在处理大型文档时,有时候希望导出部分内容,这时候就会有问题。特别是,为了方便,文档原文的字词作为了链接的description部分,那么导出时这部分正文内容就丢失了。