Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve exporting block ref #13283

Closed
Achuan-2 opened this issue Nov 26, 2024 · 49 comments
Closed

Improve exporting block ref #13283

Achuan-2 opened this issue Nov 26, 2024 · 49 comments
Assignees
Milestone

Comments

@Achuan-2
Copy link
Member

Achuan-2 commented Nov 26, 2024

导出pdf支持块引转锚点哈希跳转

In what scenarios do you need this feature?

https://ld246.com/article/1729305846229

目前导出pdf只支持导出块引为脚注,无法跳转到被引用的本文档内的块,脚注在此场景下体验不佳,会重复生成块,也没有回到原文某段文字的作用,无法制作出pdf文档标题目录,图表引用等功能,导出后的效果和在思源笔记使用的体验差别很大。

另外,目前我写的脚注插件,可以把脚注放在当前文档或者父块后,以往如果导出pdf,块引会转为脚注,这些脚注块就无法放在当前文档不然就会重复,如果能对导出pdf进行改进,脚注块放在当前文档,则能点击就跳转到对应的脚注块,会更加的自由方便

Describe the optimal solution

鉴于需要考虑引用的块是不是当前文档(及其子文档)

可参考帖子https://ld246.com/article/1729305846229

中讨论的建议
引用的是非当前文档(及其子文档)中的内容,在导出 PDF 之后转换为脚注;
引用的是当前文档(及其子文档)中的内容,在导出 PDF 之后可以直接点击跳转。

对于递归引用,只考虑第一层级引用的块是不是当前文档(及其子文档)的块

Describe the candidate solution

Other information

No response

@Achuan-2 Achuan-2 changed the title 导出pdf支持锚点哈希跳转 导出pdf支持块引转锚点哈希跳转 Nov 26, 2024
@Achuan-2
Copy link
Member Author

Achuan-2 commented Nov 26, 2024

这个功能如果完善好了,思源在写作输出上真的会再进一步

以前说思源支持块级引用,我其实没有太强的感受,我的笔记基本都是文档级别引用,但是如果说我要制做一个详细文档,读者可以点击链接就能跳转到对应部分,我就能体会到思源块级引用的方便性了

现在markdown支持块引转锚点哈希,就可以用思源轻易制作具备内容块跳转的文档了,以往写这些文档,我得用latex、quarto这些复杂工具,自己手动给标题和图表写锚点,再去引用。而思源制作,只需要复制块引用后粘贴即可,简单很多很多。

如果pdf导出也做好了,应该也会吸引很多人用思源来做各种资料pdf,教程pdf

等这个功能做出来,我也会在b站出一期视频来介绍该功能

@88250 88250 self-assigned this Nov 27, 2024
@88250 88250 modified the milestones: backlog, 3.1.14 Nov 27, 2024
@88250 88250 changed the title 导出pdf支持块引转锚点哈希跳转 Improve exporting block ref Nov 27, 2024
88250 added a commit that referenced this issue Nov 28, 2024
88250 added a commit that referenced this issue Nov 28, 2024
88250 added a commit that referenced this issue Nov 28, 2024
88250 added a commit that referenced this issue Nov 28, 2024
88250 added a commit that referenced this issue Nov 28, 2024
@88250 88250 closed this as completed Nov 28, 2024
@Achuan-2
Copy link
Member Author

Achuan-2 commented Nov 30, 2024

dev5 pdf导出,块引好像没有变化,已经选择了导出块引为锚点哈希


哦哦,要选择导出块引为脚注才行,建议对于pdf,导出块引为脚注or锚点哈希效果是一样的,或者区别开,导出块引为脚注就都是脚注,锚点哈希才会根据是否是子块生成锚点哈希,如果不是就是脚注

@Achuan-2
Copy link
Member Author

另外块超链接也应该跟随块引导出的原则,进行转换

@88250
Copy link
Member

88250 commented Nov 30, 2024

建议对于pdf,导出块引为脚注or锚点哈希效果是一样的

OK

另外块超链接也应该跟随块引导出的原则,进行转换

这个不动了,超链接不是块引

88250 added a commit that referenced this issue Nov 30, 2024
@Achuan-2
Copy link
Member Author

Achuan-2 commented Nov 30, 2024

还是希望块超链接也能导出锚点哈希和脚注

  1. 很多用户有时候不希望块引给反链面板添加太多信息,就会用块超链接,在思源笔记里,块超链接除了只是单向链接以及外部软件打开思源外,和块引没有区别。块超链接其实和导出锚点哈希的效果才是最一致的,在笔记里用块超链接就是为了方便跳转。我自己制作文档toc也会倾向于用块超链接。所以希望块超链接也应该支持导出锚点哈希。
  2. 一方面,如果用户需要导出块超链接,导出pdf的时候块引可以选择导出为块超链接,这样pdf中无论块引和块超链接全是块超链接。另一方面,应该没有几个用户希望,块引和块超链接导出pdf,只有块引转化了,而块超链接没有变化,块超链接只能给自己用,既然想要导出锚点哈希,要么是为了方便导出方便直接在pdf里看,要么就是给别人看,块超链接没有变化,是不符合预期的,不方便在pdf看,也无法给别人用

@88250
Copy link
Member

88250 commented Dec 1, 2024

有道理,稍后加一下,麻烦帮忙测试看看。

88250 added a commit that referenced this issue Dec 1, 2024
@Achuan-2
Copy link
Member Author

Achuan-2 commented Dec 1, 2024

有道理,稍后加一下,麻烦帮忙测试看看。

ok,激动,这下导出功能大进步了😄

@congSjwbsz
Copy link

这个功能终于改进了,这个导出优化再配合【目录插件】以后分享笔记不用自建服务器也可以分享了
关联:https://ld246.com/article/1723470408894

@Achuan-2
Copy link
Member Author

Achuan-2 commented Dec 1, 2024

这个功能终于改进了,这个导出优化再配合【目录插件】以后分享笔记不用自建服务器也可以分享了 关联:https://ld246.com/article/1723470408894

不知道锚点哈希的md导出为word能不能支持跳转


用思源导出的带锚点哈希的md,使用pandoc导出word试了下,发现是支持的!

PixPin_2024-12-01_19-21-42

@88250 D大要不干脆把word导出也做了🙏

@88250
Copy link
Member

88250 commented Dec 1, 2024

好的,稍后再改改。

@Achuan-2
Copy link
Member Author

Achuan-2 commented Dec 1, 2024

好的,稍后再改改。

辛苦辛苦,直接起飞🛫🚀
下周末的视频就讲思源导出做手册、电子书😄

@88250
Copy link
Member

88250 commented Dec 1, 2024

@Achuan-2 麻烦发一下你那边 pandoc 导出的命令

@Achuan-2
Copy link
Member Author

Achuan-2 commented Dec 1, 2024

@Achuan-2 麻烦发一下你那边 pandoc 导出的命令

直接用的pandoc input.md -o output.docx

@88250
Copy link
Member

88250 commented Dec 1, 2024

现在导出 Word 是导出 HTML 再调用 pandoc 导出 Word 的(不这样做的话渲染某些格式会有问题),所以导出结果只有一个文件,我这里测试这样的情况下 pandoc 生成的超链接好像不支持跳转:

image

单独使用导出的 md 再手动 pandoc 转换 docx 也是一样的:

image

88250 added a commit that referenced this issue Dec 1, 2024
@88250
Copy link
Member

88250 commented Dec 1, 2024

不清楚,但是感觉 pandoc 导出 Word 的没问题应该就不是 pandoc 的问题。

@Achuan-2
Copy link
Member Author

Achuan-2 commented Dec 1, 2024

那就改下:块引导出模式为哈希锚点时,导出 .docx 默认切换为脚注模式。

脚注模式是也像pdf一样区分文档内用锚点哈希和文档外用脚注吗

@TCOTC
Copy link
Contributor

TCOTC commented Dec 1, 2024

WPS 添加的链接在 Word 里也能跳转

@88250
Copy link
Member

88250 commented Dec 1, 2024

脚注模式是也像pdf一样区分文档内用锚点哈希和文档外用脚注吗

@Achuan-2
Copy link
Member Author

Achuan-2 commented Dec 1, 2024

pdf导出块超链接没问题了
导出word的锚点哈希貌似有点问题,点击所有链接都是跳转到最前面
@88250

@88250
Copy link
Member

88250 commented Dec 2, 2024

帮忙试下这两个文件的跳转:

导出 PDF 和 Word 锚点.docx
导出 PDF 和 Word 锚点.pdf

@Achuan-2
Copy link
Member Author

Achuan-2 commented Dec 2, 2024

帮忙试下这两个文件的跳转:

导出 PDF 和 Word 锚点.docx 导出 PDF 和 Word 锚点.pdf

pdf没问题,word全都是跳转到最前面

@Achuan-2
Copy link
Member Author

Achuan-2 commented Dec 2, 2024

我用md转html,再转word,锚点跳转是正常的,应该是程序哪里写出错了,可以先检查导出html是不是正确的


估计是锚点哈希没插入成功,我发现如果word的锚点哈希值随便输入,word点击跳转就是到最前面

@Achuan-2
Copy link
Member Author

Achuan-2 commented Dec 2, 2024

另外,导出预览模式有问题

  1. 导出锚点哈希模式不起作用,应该效果和当前选择导出为脚注的效果一样
  2. 选择导出为脚注后,锚点哈希会自动添加域名

PixPin_2024-12-02_09-54-14

@Achuan-2
Copy link
Member Author

Achuan-2 commented Dec 2, 2024

导出md,选择导出锚点哈希的问题:

块超链接,只是转化为块引,但是没有变为锚点哈希(选择导出为脚注没有问题)

PixPin_2024-12-02_10-25-21
PixPin_2024-12-02_10-25-31

@88250
Copy link
Member

88250 commented Dec 2, 2024

导出锚点哈希模式不起作用,应该效果和当前选择导出为脚注的效果一样

稍后改进

选择导出为脚注后,锚点哈希会自动添加域名

我这里重现不了,麻烦导出 .sy.zip 给我试试

导出md,选择导出锚点哈希的问题

稍后改进


我在想是不是把脚注和哈希锚点合并吧,因为两个模式加起来才是完全体。

@Achuan-2
Copy link
Member Author

Achuan-2 commented Dec 2, 2024

>我在想是不是把脚注和哈希锚点合并吧,因为两个模式加起来才是完全体

是的,我觉得可以合并,文档内是锚点哈希,文档外是脚注,选项改为脚注和锚点哈希

@Achuan-2
Copy link
Member Author

Achuan-2 commented Dec 2, 2024

选择导出为脚注后,锚点哈希会自动添加域名

我这里重现不了,麻烦导出 .sy.zip 给我试试

我指的是选择块引导出为【脚注】,导出预览模式选择复制到语雀,锚点哈希链接被识别为asset链接会自动加域名

20241202 09_47_36.sy.zip

@Achuan-2
Copy link
Member Author

Achuan-2 commented Dec 2, 2024

导出pdf问题:

当导出pdf时,如果文档有附件,会导致所有的锚点哈希失效

导出pdf时文档有附件,会导致所有的锚点哈希失效.sy.zip

@88250
Copy link
Member

88250 commented Dec 2, 2024

当导出pdf时,如果文档有附件,会导致所有的锚点哈希失效

对,这个问题我也发现了,但是解决不了,是 PDF 处理库的 bug。

@Achuan-2
Copy link
Member Author

Achuan-2 commented Dec 2, 2024

当导出pdf时,如果文档有附件,会导致所有的锚点哈希失效

对,这个问题我也发现了,但是解决不了,是 PDF 处理库的 bug。

那能不能选择导出为锚点哈希,干脆把pdf所有的附件asset链接变为普通文本,等这个bug解决了再改回去

@88250
Copy link
Member

88250 commented Dec 2, 2024

这个是已有的问题,就不改了,不然嵌入不了附件。

@Achuan-2
Copy link
Member Author

Achuan-2 commented Dec 2, 2024

这个是已有的问题,就不改了,不然嵌入不了附件。

ok,知道有这个bug也行,我有一个文档之前一直导出pdf锚点哈希无效,一个个删,才找出这个原因所在

@88250
Copy link
Member

88250 commented Dec 2, 2024

另外复制语雀那个问题可以解决错误添加图床地址的问题,但是解决不了锚点,因为复制到语雀用的是标准 markdown 渲染,不插入锚点的。

88250 added a commit that referenced this issue Dec 2, 2024
@88250
Copy link
Member

88250 commented Dec 2, 2024

这个版本暂时先改进这么多,后面考虑一下要不要合并 脚注+哈希锚点,稍后我们发测试版,麻烦关注。

@Achuan-2
Copy link
Member Author

Achuan-2 commented Dec 2, 2024

另外复制语雀那个问题可以解决错误添加图床地址的问题,但是解决不了锚点,因为复制到语雀用的是标准 markdown 渲染,不插入锚点的。

嗯嗯,理解的,用这个主要是不需要再导出md,可以直接复制md,粘贴到其他地方,比如GitHub

@Achuan-2
Copy link
Member Author

Achuan-2 commented Dec 2, 2024

这个版本暂时先改进这么多,后面考虑一下要不要合并 脚注+哈希锚点,稍后我们发测试版,麻烦关注。

辛苦辛苦

@Achuan-2
Copy link
Member Author

Achuan-2 commented Dec 2, 2024

@88250 发现一个bug,如果导出文档为pdf时,不设置导出文档标题,子文档引用父文档的链接会失效

@88250
Copy link
Member

88250 commented Dec 2, 2024

感谢反馈,后续在 #13331 中跟进。

EightDoor added a commit to EightDoor/siyuan that referenced this issue Dec 6, 2024
* commit '1710194122495d282a51650441d9fc80804561bb': (189 commits)
  🔖 Release v3.1.14
  ⬆️ Upgrade kernel deps
  🎨 siyuan-note#13320
  🎨 Support HarmonyOS NEXT system
  🎨 Support HarmonyOS NEXT system
  🎨 Support HarmonyOS NEXT system
  🎨 Support HarmonyOS NEXT system
  🎨 Support HarmonyOS NEXT system
  🎨 Support HarmonyOS NEXT system
  🎨 Support HarmonyOS NEXT system
  🎨 siyuan-note#13334
  🎨 siyuan-note#13181
  🎨 Improve exporting block ref siyuan-note#13283
  🎨 Clean code
  🐛 Fix NPE
  📝 Update changelogs
  🎨 siyuan-note#13324
  🐛 Fix NPE
  🎨 Improve image width setting siyuan-note#12516 siyuan-note#13327
  🧑‍💻 Kernel serve CalDAV service on path `/caldav/` (siyuan-note#13321)
  ...

# Conflicts:
#	README.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants