導入
こんにちは。 私は日頃からanki-editor を使ってAnkiのカードを作成しているのですが、 Emacsをupgradeすると、数式が汚く表示されるようになってしまいました。
症状としては、
- デスクトップ版のAnkiのBrowserで各Fieldのプレビューで数式が数式として表示されない (plain latex codeとして表示される)
- 数式がpng画像として表示される (もともとはMathJax inlineで表示されていた)
というものでした。
デスクトップ版のAnkiでcardを編集することはほぼないので、1の症状についてはまだ許容範囲でしたが、 2のほうについては、数式の解像度だけ低くなったり、他の文字とのサイズが合わなくなったりして、かなり気になりました。
解決策
以下を config.org
に追加することで解決しました。
(use-package! anki-editor
:after org
:init
(setq-default anki-editor-latex-style 'mathjax))
この解決策に至った背景
anki-editor でpushされたカードは、HTMLに変換された状態でカードとして保存されます。
うまく数式が表示されるカードのHTMLを見ると、数式は以下のように anki-mathjax
というタグで囲まれていました。
<anki-mathjax block="true">1 + 1 = 3</anki-mathjax>
一方、今回の問題が発生したカードのHTMLを見ると、数式は以下のように p
タグと [$$]
で囲まれていました。
<p>[$$] 1 + 1 = 3 [/$$]</p>
したがって、anki-editorがorgテキストをHTMLに変換する部分で、問題が発生していることがわかりました。
anki-editor.el
の中を見てみると、以下のように anki-editor-latex-style
という変数によって、latexのスタイルを変更できるようになっており、今回の解決策に至りました。
(defun anki-editor--translate-latex-env (latex-code)
(setq latex-code (replace-regexp-in-string "\n" "<br>" (org-html-encode-plain-text latex-code)))
(cl-ecase anki-editor-latex-style
(builtin (concat "[latex]<br>" latex-code "[/latex]"))
(mathjax (concat "\\[<br>" latex-code "\\]"))))
読んでいただきありがとうございました。