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

[Bug] 插图无法转换成图片链接 #98

Open
1 task done
beanliu opened this issue May 23, 2023 · 3 comments
Open
1 task done

[Bug] 插图无法转换成图片链接 #98

beanliu opened this issue May 23, 2023 · 3 comments

Comments

@beanliu
Copy link

beanliu commented May 23, 2023

感谢作者花时间开发并开源维护这个项目,相当好用🙏

扩展是否为最新版本(与扩展商店中的版本相同)

  • 是 (Chrome 2.25.15)

出现该问题的书本及章节(不方便公开的话可直接发邮箱告知)

贝叶斯的博弈

描述问题

导出标注时,文字当中包含的数学符号图片无法转换成Markdown的图片链接。

复现步骤

随意标注一段带符号图片的文字,然后导出本章标注。

期待的正常行为

数学符号图片应当被转换成对应的Markdown链接。

额外信息

尝试debug了下这个问题,发现可能是 /book/bookmarklist 接口行为变化导致的,具体而言是包含插图的标注数据格式变化。
比如一段包含插图的标注 "这个公式[插图]表明..." 在这个接口下变成 "这个公式表明...",其中 "[插图]" 变成了一个 U+FFFC,导致相关处理代码无法插入图片链接。
bg-popup-process.ts 以及 content-markedData.ts 中相关的逻辑做相应调整并本地测试了下可以解决这个问题,但我不确定这个问题是否具有广泛性,所以在这里先提个 issue 周知下,如果有遇到相同问题的人可以尝试下这个 workaround。

@beanliu
Copy link
Author

beanliu commented May 23, 2023

补充下具体的workaround diff(注意''不是空格):

diff --git a/src/background/modules/bg-popup-process.ts b/src/background/modules/bg-popup-process.ts
index 297be71..d690a3f 100644
--- a/src/background/modules/bg-popup-process.ts
+++ b/src/background/modules/bg-popup-process.ts
@@ -107,9 +107,9 @@ function addMarkedData(mark: any, markedData: any, footnoteContent: string) {
 		/* 生成替换字符串 */
 		if(imgSrc) { // 图片
 			let insert1 = '', insert2 = ''; // 非行内图片单独占行(即使它与文字一起标注)
-			if(!isInlineImg && markText.indexOf('[插图]') > 0) // 不为行内图片且'[插图]'前有内容
+			if(!isInlineImg && markText.indexOf('') > 0) // 不为行内图片且'[插图]'前有内容
 				insert1 = '\n\n'
-			if(!isInlineImg && markText.indexOf('[插图]') != (markText.length - 4)) // 不为行内图片且'[插图]'后有内容
+			if(!isInlineImg && markText.indexOf('') != (markText.length - 1)) // 不为行内图片且'[插图]'后有内容
 				insert2 = '\n\n'
 			replacement = `${insert1}![${alt}](${imgSrc})${insert2}`
 		}else if (footnote) { //注释
@@ -119,14 +119,14 @@ function addMarkedData(mark: any, markedData: any, footnoteContent: string) {
 			footnoteContent += `<p id="${footnoteId}">${footnoteNum}. ${footnote}<a href="#${footnoteId}-ref">&#8617;</a></p>\n`;
 		}else if (code) { //代码块
 			let insert1 = '', insert2 = ''
-			if(markText.indexOf('[插图]') > 0) //'[插图]'前有内容
+			if(markText.indexOf('') > 0) //'[插图]'前有内容
 				insert1 = '\n\n'
-			if(markText.indexOf('[插图]') != (markText.length - 4)) //'[插图]'后有内容
+			if(markText.indexOf('') != (markText.length - 1)) //'[插图]'后有内容
 				insert2 = '\n\n'
 			replacement = `${insert1}${Config.codePre}\n${code}\n${Config.codeSuf}${insert2}`
 		}
 		if (replacement) { // 替换
-			markText = markText.replace(/\[插图\]/, replacement);
+			markText = markText.replace(//, replacement);
 			if (abstract) mark.abstract = markText; // 新字符串赋值回 mark
 			else mark.markText = markText;
 		} else console.log(mark, markedData);
@@ -147,7 +147,7 @@ export function addRangeIndexST(marks: any, markedDataLength: number) {
 		let {abstract, range: markRange} = marks[i];
 		let markText = abstract ? abstract : marks[i].markText;
         // 获取当前标注中的“[插图]”位置
-		let indexes = getIndexes(markText, '[插图]');
+		let indexes = getIndexes(markText, '');
 		let markedDataIdxes = [];
         // 遍历当前标注中的“[插图]”位置
 		for (const idx of indexes) {
diff --git a/src/content/modules/content-markedData.ts b/src/content/modules/content-markedData.ts
index ed191df..9a33963 100644
--- a/src/content/modules/content-markedData.ts
+++ b/src/content/modules/content-markedData.ts
@@ -94,14 +94,14 @@ function countTargets() {
 		if(sectionListItem_title && sectionListItem_title.textContent == curChapTitle){
 			console.log("找到当前章节的标注");
 			foundChap = true;
-			if ($(element).text().indexOf('[插图]')>=0) {
+			if ($(element).text().indexOf('')>=0) {
 				targetCnt++;
 			}
 		}else if(foundChap == true  && sectionListItem_title 
 			&& sectionListItem_title.textContent != curChapTitle){
 			break; // 不再属于当前章节,退出循环
 		}else if(foundChap == true){ // 本章内的内容
-			if ($(element).text().indexOf('[插图]')>=0) {
+			if ($(element).text().indexOf('')>=0) {
 				targetCnt++;
 			}
 		}

@Higurashi-kagome
Copy link
Owner

感谢反馈。我这里看好像还是在用“[插图]”做占位符,不过我添加了一个配置项,如果确实有变动,可在配置项中自定义。

Details

image

@beanliu
Copy link
Author

beanliu commented May 24, 2023

添加了一个配置项,如果确实有变动,可在配置项中自定义。

取决于这个变化背后具体的原因,理论上还存在这么一种情况:两个占位符同时存在于一本书的不同标注中。如果没有更好的信息获取渠道来确认,或许可以先等等看有无更多类似反馈。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants