AffinityでLaTeXの数式を扱う
はじめに
Affinityは無料で使えるグラフィックデザインソフトです.レイヤーは当たり前に使えますし,ラスタからベクタまでなんでも編集できます.PowerPointよりも細かい編集がしやすいので,私は主に論文の図を描くために使っています.
ただし,PowerPointに劣っている点が一つあります.それは 数式入力ができない ことです.
回避策として,PowerPointで数式を書いてコピー&ペーストでAffinityに持っていく方法がありますが,この方法だとたまに文字がバグって崩れてしまうことがあります.

やはりLaTeXで書いた数式をそのままAffinityに持っていきたいところです.この記事では,LaTeXの数式をSVGに変換してAffinityで読み込む方法を紹介します.
結論
LaTeXで書いた数式をSVGファイルに変換し,それをAffinity上でベクタとして読み込みます.SVGなのでAffinity上で拡大縮小してもきれいなまま扱え,パスとして編集することも可能です.
変換には latex コマンドと dvisvgm コマンドを使います.
$ latex hoge.tex
$ dvisvgm --no-fonts hoge.dvi -o hoge.svg
手順
1. 数式を含むtexファイルを用意する
数式だけを含む最小限のhoge.texを用意します.例えば以下のような内容です.
\documentclass[preview,border=2pt]{standalone}
\usepackage{amsmath,amssymb}
\begin{document}
\begin{align*}
\text{ReLU}(x) &=
\begin{cases}
x & \text{if } x \geq 0 \\
0 & \text{if } x < 0
\end{cases} \\[6pt]
\sigma(x) &= \frac{1}{1 + e^{-x}}
\end{align*}
\end{document}
standaloneクラス(previewオプション付き)を使うことで,余白の少ない数式単体のページを作れます.
2. LaTeXでコンパイルしてDVIファイルを生成
$ latex hoge.tex
これによりhoge.dviが生成されます.
3. dvisvgmでSVGに変換
$ dvisvgm --no-fonts hoge.dvi -o hoge.svg
--no-fontsオプションを付けることで,フォントをグリフ参照ではなくパス(アウトライン)として埋め込みます.これにより,Affinity側にLaTeXのフォントがインストールされていなくても正しく表示され,文字化けや文字バグりの心配がなくなります.
4. AffinityでSVGを読み込む
生成されたhoge.svgをAffinity Designer/Publisherにドラッグ&ドロップして読み込みます.

SVGとして読み込まれるため,ベクターパスとして扱え,拡大縮小しても劣化しません.必要であれば「カーブに変換」で図形として自由に編集することもできます.
svg画像をダブルクリックすると,編集画面に移ることができます.

読み込んだ直後のsvgはカーブの集合になっているので,手動でグループ化しておくと扱いやすくなります.

グループ化したら切り取りして元のAffinityプロジェクトに貼り付けます.
これでAffinityの中でLaTeX産の数式を自由に配置することができます.
svgの編集で切り取りした場合,最初に読み込んだ時のsvgファイルのレイヤが空になっているはずなので消しておきましょう.
