dedao-dl icon indicating copy to clipboard operation
dedao-dl copied to clipboard

[1]格式的注释错行

Open blakehan opened this issue 2 years ago • 16 comments

Describe the bug [1]这种类型的注释,转成epub后位置不正确

To Reproduce 原书 https://www.dedao.cn/ebook/reader?id=qPKdG1m9B8MaveyJdxRzNnKYlqgVZ3knKqWo5pL7E4m1r26kQjXDAPObGkYgJ4pN image

转换以后 image

blakehan avatar Dec 02 '22 14:12 blakehan

bug #141

yann0917 avatar Dec 03 '22 03:12 yann0917

comment.diff.txt @yann0917 感谢回复。我做了个简单粗暴的修改,现在可以支持这种注释格式了

blakehan avatar Dec 04 '22 13:12 blakehan

@blakehan 哇多谢有人在看这个问题。我测试了一下有些小问题。太多年不写码了只能发上来求帮助了:

  1. 插入注释都按照上一个字符定位会导致在文末的注释区里,当[1] [2]是行首的时候跳到上一段。
  2. 用#a的比对普遍性不够,建议使用/OBEPS/*#这样的比对。
  3. 不知道要怎么写才可以保留跳转的超链接。

rainrdx avatar Dec 05 '22 18:12 rainrdx

comment.diff.txt @yann0917 感谢回复。我做了个简单粗暴的修改,现在可以支持这种注释格式了

9488_庄子(中华经典名著全本全注全译丛书)_方勇 译注 这本书脚注是(1) 这样的,但是不需要超链接,比如《逍遥游》这一段 image

所以我统一修改一下: 根据 svg 的 top 属性来判断,解析文本的时候 如果本次循环的 top 比上一次的小说明是上标,标注一下解析出来的是脚注, 然后 在生成 html的时候用<sup></sup> 标签,但是超链接的脚注暂时还是没有办法。

yann0917 avatar Dec 06 '22 07:12 yann0917

@blakehan 哇多谢有人在看这个问题。我测试了一下有些小问题。太多年不写码了只能发上来求帮助了:

  1. 插入注释都按照上一个字符定位会导致在文末的注释区里,当[1] [2]是行首的时候跳到上一段。
  2. 用#a的比对普遍性不够,建议使用/OBEPS/*#这样的比对。
  3. 不知道要怎么写才可以保留跳转的超链接。

我有办法跳转脚注了:

解析脚注的 href

  1. 在脚注位置设置 id 属性,如 #章节+ 链接 id#chapter020.xhtml_b79
  2. 在跳转的注释位置设置 id 属性 , 使用#章节+ 链接 id 生成新id, 如 #chapter020.xhtml_a79
  3. a标签中href="#xxx"跳到id="xxx" ,在 脚注位置和注释位置都通过 a标签的href 来回跳转

可以拉取最新代码试一下

yann0917 avatar Dec 06 '22 10:12 yann0917

@yann0917 哇多谢多谢作者花时间处理这个。十分感谢!我试了一下这本书很完美了,不过试了一下天朝的崩溃,似乎定位和跳转还是有问题。总之谢谢作者辛苦了。。。。。

rainrdx avatar Dec 06 '22 13:12 rainrdx

@yann0917 哇多谢多谢作者花时间处理这个。十分感谢!我试了一下这本书很完美了,不过试了一下天朝的崩溃,似乎定位和跳转还是有问题。总之谢谢作者辛苦了。。。。。

定位有问题是因为脚注是 【1】 而不是 [1] 这本书的注释的跳转是 href="/OEBPS/Text/chapter_00004.xhtml#zhushi3 返回注释是fhzs3 ,如果每本书的跳转属性不一样,那只能遇到一种写法处理一种写法😭

yann0917 avatar Dec 07 '22 06:12 yann0917

@yann0917 哇多谢多谢作者花时间处理这个。十分感谢!我试了一下这本书很完美了,不过试了一下天朝的崩溃,似乎定位和跳转还是有问题。总之谢谢作者辛苦了。。。。。

假设是统一的格式 字母+数字 如 abc123,那我统一处理一下应该就行了。

yann0917 avatar Dec 07 '22 06:12 yann0917

@yann0917 哇多谢多谢作者花时间处理这个。十分感谢!我试了一下这本书很完美了,不过试了一下天朝的崩溃,似乎定位和跳转还是有问题。总之谢谢作者辛苦了。。。。。

可以了,拉取最新代码试一下,现在兼容 【1】和 [1],注释 id 正则匹配

yann0917 avatar Dec 07 '22 08:12 yann0917

@yann0917 哇感谢作者辛苦。这个真的是非常完美了!

rainrdx avatar Dec 07 '22 13:12 rainrdx

新的正则有点问题。电子书的href规则比较多。比如这本就是#note_123。是否可以通过判断当前节点top比前面小,并且id属性有值来判断是否为footnote? 一般来说双向跳转的脚注肯定会有id属性。 image

blakehan avatar Dec 07 '22 13:12 blakehan

刚才的例子生成的返回链接是 <a id="Section0158.xhtml_noteBack_1" href="#Section0158.xhtml_noteBackBack_1" style="text-decoration:underline solid;">]</a> 书: https://www.dedao.cn/ebook/reader?id=pqvNQ1KRJa7EmgG8MPKrzykNVbDpBWZvppWQA1xO54nlvZq296YodejLXVJE5eAd

blakehan avatar Dec 07 '22 13:12 blakehan

一般来说双向跳转的脚注肯定会有id属性。

打开 cmd/app/ebook.go err = utils.SaveFile(chapterID, "", strings.Join(svgList, "\n"))注释,可以保存每个章节的原始数据,可以观察到只有一方有 id 属性,另一方没有,所以要造新的 id。 另外不能用自带的 id, 每个章节都有 [1] 的话, id属性是相同的,所以要改成 #章节_id

yann0917 avatar Dec 08 '22 01:12 yann0917

遇到了一个比较奇怪的情况。即每一章有多个不同的文件,不同文件的注释通通都指向最后的那个文件。

https://d.dedao.cn/E4Udi2unmgToJD2e

不过这种情况比较少,估计也难处理也不需要作者费心了。就是记录一下。

rainrdx avatar Dec 09 '22 17:12 rainrdx

遇到了一个比较奇怪的情况。即每一章有多个不同的文件,不同文件的注释通通都指向最后的那个文件。

https://d.dedao.cn/E4Udi2unmgToJD2e

不过这种情况比较少,估计也难处理也不需要作者费心了。就是记录一下。

《2928_东晋门阀政治》这本书的这个问题已解决,同一章拆分成多个文件,导致双向跳转id不对。拖了这么久才解决问题,实在是抱歉。

yann0917 avatar Aug 30 '23 14:08 yann0917

是多谢作者花时间想十分感谢

rainrdx avatar Aug 30 '23 19:08 rainrdx