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

希望可以加入显示行号的功能! #2

Closed
sumruler opened this issue Mar 29, 2024 · 10 comments
Closed

希望可以加入显示行号的功能! #2

sumruler opened this issue Mar 29, 2024 · 10 comments
Assignees
Labels
enhancement New feature or request

Comments

@sumruler
Copy link

这个项目太酷了!希望能够加入显示行号的功能!

@Lord-Turmoil
Copy link
Owner

谢谢!😀

行号的功能最初是有的,不过当时有行号的样式复制后格式会出问题,所以后来的版本就删掉了。

之后有空解决了样式问题就会加回来的。😉

@Lord-Turmoil Lord-Turmoil added the enhancement New feature or request label Apr 8, 2024
@Lord-Turmoil Lord-Turmoil self-assigned this Apr 8, 2024
@Lord-Turmoil
Copy link
Owner

这个项目太酷了!希望能够加入显示行号的功能!

感谢您的反馈,目前已经可以在代码中显示行号了。😁

不过行号暂时没办法与代码一同拷贝,Office 似乎无法识别行号所使用的 HTML 语法,这个问题目前我没有找到解决方案。🥲

@sumruler
Copy link
Author

@Lord-Turmoil
Copy link
Owner

这个网站使用的高亮库和我项目中的不一样,它的行号实现逻辑是这样的,可以通过 F12 检查元素查看,其中通过 ::marker 伪元素添加行号,因为 li 本身是标准的列表元素,所以 Office 可以识别为行号。(所以粘贴到 Office 里的行号是 li 转换的,而不是在网页里看到的。)

<li class="alt">
    <span><span>here is the code...</span></span>
</li>

我这个项目使用样式比较丰富的 Prism.js,其行号实现是通过单独的一列 span(其中使用 ::before 伪元素)添加行号,而 span 并不是列表元素,而且使用了特别的布局方式(并不是简单的从上到下),所以 Office 无法识别。

<span aria-hidden="true" class="line-numbers-rows">
    <span></span>
    <span></span>
</span>

PS:其实就是因为这个网站不太美观,所以我写了这个项目。😋

@Lord-Turmoil
Copy link
Owner

其实有一种不太完美解决方案,就是将 HTML 元素保存为图片,具体可以看下面这个 StackOverflow 的帖子。

最初想的就是直接粘贴为文本框,不过导出图片确实是一个方案,因为 Carbon 就是这么做的,效果也很好。其中支持 SVG 格式的导出,可以保证缩放的清晰。

感谢您的反馈,之后我尝试实现一下图片的导出。🫡

@sumruler
Copy link
Author

可否通过表格来实现,点击复制时,生成一个两列表格,第一列为行号,第二列为代码。或者可否在复制的时候通过正则表达式嵌套li标签从而实现该效果

@Lord-Turmoil
Copy link
Owner

可否通过表格来实现,点击复制时,生成一个两列表格,第一列为行号,第二列为代码。或者可否在复制的时候通过正则表达式嵌套li标签从而实现该效果

我测试了 SVG 图片生成效果,与 Carbon 相同,但是发现 Office 对 SVG 格式支持不好,没法显示导出的 SVG。

对于 li 标签,嵌套倒不是问题,主要是 li 生成的行号样式不好看。

不过生成表格的思路挺好的,我觉得可以尝试一下。😆

@Lord-Turmoil
Copy link
Owner

表格确实效果不错,不过部分 CSS 样式由于使用伪元素 :before 的缘故会有失真,而且表格无法完美的反映 marginpadding 等属性,此外,由于 Word 对 HTML 支持也不完善,边框样式也有一定问题。

image

整体上还算可以接受,可以作为一个试验性功能,再次感谢您的建议。🫡

最近事情比较多,后续进一步优化后会在下一个版本中添加该功能,当前修改在可以在 #3 中查看。

@Lord-Turmoil
Copy link
Owner

PowerPoint 对 HTML 的支持有些差,很多样式无法生效。Word 还可以,效果如下,但是还是需要手动调整列宽等。目前已经合并了该功能。

image

@sumruler
Copy link
Author

谢谢!,效果非常好!

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

No branches or pull requests

2 participants