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

感谢楼主。我的org文件有 #+SETUPFILE: ~/.foo.org 作为latex的文件头,能否让renderer跳过这一行 (有这一行则无法编译成功,latex error),比如foo.org里面有mathjax无法识别的命令。

你的foo.org里具体是有什么导致出错呢?我觉得ignore一个SETUPFILE可能不是个好主意,比如有人可能会在STUPFILE里定义一些newcommand。

楼主回复好快!是一个\input{bar.tex} 命令,latex文件头都是存在这个tex文件中,然后在其他的tex或org文件调用的。

确实感觉不应该ignore一个setupfile,一般来说只有一个setupfile,或许可以加一个参数,选择是否ignore setupfile,类似 org-latex-impatient-ignore-org-setupfile 默认值是nil,需要的就可以设t,或者类似 org-export-in-background 加上 org-export-async-init-file 那样的设定。

我还是觉得这不是个好主意,因为一个很正常的操作是在SETUPFILE里定义一些新的命令,比如\newcommand{\Z}{\mathbb{Z}}这样。而这种定义是不应该被ignore的。而你的“一般来说只有一个SETUPFILE”其实也未必成立,比如有人会用一个SETUPFILE来处理导出到HTML时的情况,一个SETUPFILE来处理导出到PDF时的情况。总结来说,我认为ignore setupfile这个做法过于粗糙。

我觉得正确的做法是找到你的bar.tex里究竟哪里导致了不兼容。我给develop分支push了正确处理带可选参数的\usepackage的commit,可以看一下能不能解决你的问题。如果你方便,能给一个minimal offending file吗?

没问题,确实,我考虑欠周。

org file 内容 #+SETUPFILE: ~/foo.org

foo.org 内容 #+LATEX_HEADER: \input{~/TeXheader.tex}

TeXheader.tex 内容 一些latex命令,不影响render

如果把org文件改成 #+SETUPFILE: ~/TeXheader.tex 就可以预览了,也就是说,不能识别的是input命令。

那必然不可能支持input命令……这个涉及的东西太多。你可以考虑修改org-latex-impatient-user-latex-definitions,参照里面的内容给list里加一项"\\renewcommand{\\input}[1]{}",这相当于在生成preview的时候直接忽略input命令。

謝謝,問題解決!應該好好讀github上的文檔的。

(setq org-latex-impatient-user-latex-definitions '(“\newcommand{\ensuremath}[1]{#1}” “\renewcommand{\usepackage}[1]{}” “\renewcommand{\input}[1]{}”))

我再多写点文档吧

windows还有没有救了。

我现在没有Windows的机子,没办法测试。也不清楚现在Windows上Emacs的正确食用方法。你看看issue里有没有帮助吧,有人成功了

特别想在eww里实现这种预览,请教有什么思路吗

更喜欢直接显示图片在orgmode中,今天研究了下latex转png,终于可以在windows中显示公式了。

没用实时预览,在src code block中写好公式后,C-c C-c 输出图片,添加到后面的result结果中。

缺点是占用空间比较大,也没法写行内公式。

可以设置 #+STARTUP: hideblocks 默认折叠代码块。

1 个赞

为啥不用自带的 org-latex-preview :thinking: 还能默认支持行内公式

试过,在windows上会显示个空的方块。。。

那可能需要设置下 org-preview-latex-default-processorg-preview-latex-process-alist,具体调试过程可以参考下这个帖子 spacemacs org中得latex fragment里面输入中文preview并不正确 - #8,来自 Voleking

看错,以为你说的是楼主做的 org-latex-instant-preview,和 org-latex-preview 不一样,org-latex-preview我再试试

可以显示了,但是显示的图片非常大

大小也可以调,你先看看文档是不是那两个数字,我不太记得了

可以了,convert命令要指定一下 -trim -antialias 参数

这位好像解决了windows中不能预览的问题,但是我没看懂,能帮我解释一下吗