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

[1]格式的注释错行 #156

Open
blakehan opened this issue Dec 2, 2022 · 16 comments
Open

[1]格式的注释错行 #156

blakehan opened this issue Dec 2, 2022 · 16 comments
Labels
bug Something isn't working

Comments

@blakehan
Copy link

blakehan commented Dec 2, 2022

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

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

转换以后
image

@yann0917
Copy link
Owner

yann0917 commented Dec 3, 2022

bug #141

@blakehan
Copy link
Author

blakehan commented Dec 4, 2022

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

@yann0917 yann0917 added the bug Something isn't working label Dec 5, 2022
@rainrdx
Copy link

rainrdx commented Dec 5, 2022

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

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

@yann0917
Copy link
Owner

yann0917 commented Dec 6, 2022

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

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

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

yann0917 added a commit that referenced this issue Dec 6, 2022
@yann0917
Copy link
Owner

yann0917 commented Dec 6, 2022

@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 来回跳转

可以拉取最新代码试一下

@rainrdx
Copy link

rainrdx commented Dec 6, 2022

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

@yann0917
Copy link
Owner

yann0917 commented Dec 7, 2022

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

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

@yann0917
Copy link
Owner

yann0917 commented Dec 7, 2022

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

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

yann0917 added a commit that referenced this issue Dec 7, 2022
@yann0917
Copy link
Owner

yann0917 commented Dec 7, 2022

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

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

@rainrdx
Copy link

rainrdx commented Dec 7, 2022

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

@blakehan
Copy link
Author

blakehan commented Dec 7, 2022

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

@blakehan
Copy link
Author

blakehan commented Dec 7, 2022

刚才的例子生成的返回链接是
<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

@yann0917
Copy link
Owner

yann0917 commented Dec 8, 2022

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

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

@yann0917 yann0917 reopened this Dec 8, 2022
@rainrdx
Copy link

rainrdx commented Dec 9, 2022

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

https://d.dedao.cn/E4Udi2unmgToJD2e

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

@yann0917
Copy link
Owner

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

https://d.dedao.cn/E4Udi2unmgToJD2e

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

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

@rainrdx
Copy link

rainrdx commented Aug 30, 2023

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants