popweb,基于Web技术的弹窗框架

epc的原因我给你分析了,你继续改细节吧,我先不合并补丁。

好的。 谢谢 :+1: 现在已经正常了。

@manateelazycat 功能已经差不多了。我已经开始用了。还有两个小问题:

  1. 如果公式比较高,比如二分之一,下边的二会被遮挡。只要手工去网页上刷新一下,后面就再也没这个问题了。还没想明白是怎么回事。
  2. 光标离开buffer,公式不会自动消失。我还没想好怎么实现这个功能。

第一个问题,尝试把

self.web_window.resize(render_width * self.web_window.zoom_factor * 1.2,
                               render_height * self.web_window.zoom_factor)

改成

self.web_window.resize(render_width * self.web_window.zoom_factor * 1.2,
                               render_height * self.web_window.zoom_factor * 1.2)

因为我发现 katex-preview 这个 div 的大小不是窗口的全部,感觉窗口边框也占用一部分空间, 高度你可以乘以 1.2 试一下

第二个,你可以看看Emacs有啥 hook 的没? 如果 focus buffer 发生变化就隐藏窗口

1.2昨天已经试过了,没用。也改了CSS,仍然无效。很奇怪,刷新之后就没事了。

我一会儿去加个focus-buffer-hook试试

你先把其他问题都先解决了吧,如果只剩下‘要刷新一下才能’解决的问题,我估计是Katex.js的刷新函数是异步的,在render函数执行完成后立即获取 div 高度不准确。

你可以看看 katex render 有没有回调函数?或者简单加一个 timeout 来执行 offsetWidth/offsetHeight 获取。

目前就这两个问题了。我再去试试。应该跟你说的一样,还是resize那里不对头。

1 个赞

现在只剩最后一个问题了,分数公式显示还是不完整。

应该和CSS有关系,与resize没关系。只要重复执行pop_katex_window,更确切是重复执行两次

self.web_window.load_finish_callback = self.render_katex
self.web_window.webview.setUrl(QUrl.fromLocalFile(index_file))

就能显示正常。我试过直接

self.web_window.webview.page().runJavaScript(
            '''katex.render("{}"'''.format(self.latex_string) + ", document.getElementById('katex-preview'), {throwOnError: false,displayMode: true});document.getElementById('katex-preview').style.display='inline';document.getElementById('katex-preview').style.padding = '0px';" )

也没效果。大佬有什么看法?

最新的代码已经推送了。

@manateelazycat 现在只剩最后一个问题了,分数公式显示还是不完整。

应该和CSS有关系,与resize没关系。只要重复执行pop_katex_window,更确切是重复执行两次

self.web_window.load_finish_callback = self.render_katex
self.web_window.webview.setUrl(QUrl.fromLocalFile(index_file))

就能显示正常。我试过直接

self.web_window.webview.page().runJavaScript(
            '''katex.render("{}"'''.format(self.latex_string) + ", document.getElementById('katex-preview'), {throwOnError: false,displayMode: true});document.getElementById('katex-preview').style.display='inline';document.getElementById('katex-preview').style.padding = '0px';" )

也没效果。大佬有什么看法?

最新的代码已经推送了。

现在是获取 katex-preview div大小,你直接改成body这个element元素呢?要查一下获取body元素的js代码

我盲猜是,seturl会强制让整个网页重新绘制,而简单katex render不会在公式变高的时候撑大document高度

不是document高度不够,四边的padding还是很明显的,只是分母被遮住了。感觉是overflow: hidden惹的祸。

现在好了吗?

没。白天我再抽空试试。现在正常使用没问题了。就这一个小毛病。 :joy:

@manateelazycat 大佬,帮我看看,还是没试出来。

要半夜了,最近比较忙。

不急。我还在整。

好棒,那是不是也能实时显示 mermaid?

还有,不知道能否嵌入到文本中,这样,就可以动态的显示任意web内容了,视频,音乐都可以内嵌到org中。

现在还不能嵌入内容

有html2image,可以将把latex公式嵌进去。

其他的需要截取一张图片,点击图片打开网址就行了吧。

他说的是网页控件和emacs文字交错混合排版,插入图片现在org-mode就可以