新插件:Org-mode LaTeX 即时预览

默认值我会在试过HiDPI等设备之后再决定。

有空我研究一下这个怎么搞,没有思路。

这是现在实现的问题。现在是为了保证没有race condition的比较激进的做法,问题是会有多余的buffer。在其他功能稳定之后会尝试避免多余的buffer。

这个应该是改posframe的position就行了。你觉得我是不管inline还是display的LaTeX,都用一个position,还是允许根据不同的LaTeX类型用不同的position?另外,占整个buffer的宽度是什么意思?

最简单的办法是提供一个接口允许用户用自定义函数计算posframe的位置大小,再加几个默认可选的函数。

整个宽度是指图片的宽度等于buffer宽度,看起来像是下面单独的buffer一样。这样感觉比较好看

这个posframe支持,但是文档没有说清楚怎么用,我研究一下代码。

这个不太现实:LaTeX fragment的长宽参差不齐。如果强行scale到buffer的宽度,那一开始会巨大无比,打着打着又逐渐变小。而且我觉得,preview应该离正在写的部分近一些,这样避免视线反复移动。

哦,不用scale具体的图片,可以在下面叠加一个空白的posframe,主要是为了整洁美观

感觉会把现在的一些实现搞挂……我研究一下怎么弄吧

麻烦你了,嘿嘿。

没事。我自己用着记读paper的note,感觉好爽

终于有空实现C-g了,发现很难找到一个我满意的逻辑:按了C-g之后,preview暂时隐藏了,那它什么时候应该重新显示呢?当光标挪到另一个LaTeX fragment上吗? 你有什么想法?

当光标移动&处于latex fragment时显示preview,C-g关闭preview。要是在preview隐藏时关闭preview buffer就更好了

用了一下,没有配置成功,截图如下

2020-08-16-001503_425x105

请问,之前有遇到这种情况吗

直觉上EAF不是更适合作这些吗?没有考虑用EAF框架开发吗?

没有遇到过,能给个最小的可复现的配置和对应的org文件吗?

没有理解为什么你认为EAF更适合做预览。 另外EAF本身很重,还只能在Linux上用,配置起来也不容易。

很棒的插件 :grinning:,我看到过最让我满意的工作方式是texmacs,不知您使用过没有,它基本上是所见即所得的编辑方式,非常直观流畅。可惜emacs不容易实现类似功能。emacs类似插件在数学公式预览上总是有一个很大的不好的地方:设想一下我有一个非常复杂的公式,然后预览后发现一个地方的下标出错了,我怎么去修改呢?我要很仔细的从反人类的latex迷宫里面去找到那个下标的位置,然后修改,这种方式简直是个灾难。楼主的插件如果能实现双向同步就很棒了,比如从预览图片中点击(或者通过方向键控制)找到出错下标,然后回车就能定位到latex对应下标位置。这种方式虽然还不像texmacs那样直观,但是至少是能用了。

字符级别的双向同步是需要从底层实现LaTeX渲染引擎的,比如TeXmacs,LyX之类的。即使是SyncTeX也只能在正文中精确到段落进行双向跳转。所以双向跳转高概率是没什么希望……唯一的可能性在于MathJax或者其他js的渲染引擎会不会提供反向的API。对此我比较悲观。

或者退一步,有没有可能实现这样的功能:当我的光标在某个字符上的时候,在预览图片中对应的那部分区域是有高亮(或者其他方式的区别显示)的,这样也能在一定程度上弥补上面的缺陷。比如一个比较容易想到的方案是,临时将光标处的字符(或者复杂一点,一个合理的区域)加一个颜色属性,然后在去渲染。

这个可以做到的,实现的难度主要在于如何识别“一个合理的区域”。另外这个功能还有一个不大不小的问题:tex2svg编译需要几秒钟,所以高亮的显示会有明显的延迟。总之我考虑一下具体怎么弄

windows10可以使用吗?

不清楚。如果你能从Emacs成功调用tex2svg的话,理论上可以。