【分享】在 org-mode 和 latex-mode 中美化公式预览

我国庆的时候,跑到你的配置下,把latex那边抄了个大半 :rofl:

哈哈,我也是抄别人的。

方便分享下配置链接么,有空想去参考下

1 个赞

您好,可以把字体分享一下吗?

2 个赞

啥是mixed-pitch

是这个包,简单说就是不同的结构用不同的字体。

比如在 org-mode 里面正文用变宽字体方便阅读,而代码块、表格等部分用等宽字体方便编辑。

1 个赞

awesome

xenops 只支持 documentclass 为 article 的,导致很大一部分情况用不了

可以修改 org-format-latex-header ,我改成了 standalone ,目前体验下来还行。

不,怎么能改那个模板呢…其它体验不要了嘛?

实际上应该是 org-latex-make-preamble 的 template 不应该在 xenops-math-latex-make-latex-document 里面指定。

另外这个问题就算是直接使用 xenops 编辑 latex 文件也不行。

能具体说说吗?目前我就了解到它和 latex preview 有关。

那是否可以用 advice 或 override 来支持自定义的模板呢?

能具体说说吗?目前我就了解到它和 latex preview 有关。

org latex babel

那是否可以用 advice 或 override 来支持自定义的模板呢?

那我猜你要 override 那一整个函数,而且依然不可靠。

xenops 本质也是使用 org 那一套,和修改 org-preview-latex-process-alist 后设置 org-preview-latex-default-process 没多少区别,反正现在 emacs 支持 svg(

而直接写 latex 大概又不需要在文档里面预览,有 auctex 的字体基本也够了…

1 个赞

这个是 org-mode 自带的 latex preview 效果,当然需要的话也可以 center

在这一部分中, 修改 :ascent 值在范围 90 ~ 100 中只能保证预览图片的底部与行内文本对齐: (:ascent 100, 效果).

这样对行内公式有上标的情况是友好的, 但倘若公式内有下标或者其他一些非文本高度的符号, 依然是不能保证文本与公式内文本对齐的, 见下图 (:ascent 100)

Screenshot 2022-10-16 at 10.18.54

因此我在思考能否有一种动态修改 :ascent 值的方法? 比方说公式内有上标时将其改为 90 ~ 100, 下标时 改为 0-10, 而其他情况则默认 :ascent center 这样. 但本人目前没有实现这个功能的思路.

发现有一个包 texfrag 基于 mathjax + dvipng 很好的实现了行内公式的对齐. 我尝试读了代码… 但本人水平很有限, 没有弄明白是如何实现的.

自带的不也是用的 org-format-latex-header 嘛,限制和 xenops 应该是一样的吧?

确实,反正都要自己写那一堆东西。其实最主要的吐槽是 xenops 不能在非 article 的 latex-mode 下用x

latex-mode 里面确实挺烦的,动不动就因为有些包没有而不能预览。

我的想法是这样的:

(defun eli/change-xenops-latex-header (orig &rest args)
  (let ( foo
          (org-format-latex-header "xxx"))
    (apply orig args)))
(advice-add 'xenops-math-latex-make-latex-document :around #'eli/change-xenops-latex-header)
(advice-add 'xenops-math-file-name-static-hash-data :around #'eli/change-xenops-latex-header)

自动根据当前项目设置 latex-header ,不知道会有什么问题。

自动根据当前项目设置 latex-header ,不知道会有什么问题。

对于 latex 来说还有很多呢。还是 beamer,xcolor 与 hyperref 需要作为 documentclass 的一部分传进去,\documentclass[xcolor={xxx},hyperref={xxx},…]{beamer},org mode 里面有 latex class options 所以没问题,然而 latex 不是 org,class 倒是 beamer 了,但是 header 部分就不是了,依然继承 org-mode 的 package header。

1 个赞