libreoffice の TeX 数式機能、美しくてよいのだけれど、日本語を埋め込めないのが残念。なので、ちょっとハックして、対処してみた。
かなりアドホックな対処なので、正しい方法を知っている人がいたら、教えてほしい。
修正箇所
- 環境:
- linux (Ubuntu 20.04.6 LTS)
- LibreOffice 6.4.7.2 40(Build:2)
- platex: e-pTeX 3.14159265-p3.8.2-190908-2.6 (utf8.euc) (TeX Live 2019/Debian)
- libreoffice オフィスの個人設定 directory の下の TexMaths に移動。
cd ~/.config/libreoffice/4/user/TexMaths
- "TexMaths-texm.sh" を以下のように修正。
- 65 行目付近の
latex
をplatex
に。 - 72 行目付近の
dvisvgm
の行を以下のように変更
- 65 行目付近の
dvipdfmx ${filename}.dvi &> ${filename}.dout
pdfcrop ${filename}.pdf ${filename}_.pdf &>> ${filename}.dout
mv ${filename}_.pdf ${filename}.pdf
dvisvgm -n1 -P -e ${filename}.pdf &> ${filename}.dat
- 上記の変更の patch は以下の通り。
*** TexMaths-texm.sh.org 2024-10-06 16:39:31.274347783 +0900
--- TexMaths-texm.sh 2024-10-06 18:04:28.476477157 +0900
*************** fi
*** 62,75 ****
rm ${filename}.{dvi,out,bsl,dat,log,aux,png,svg} &> /dev/null
# Creation of the DVI file
! latex -shell-escape -interaction=nonstopmode ${filename}.tex > ${filename}.out
# Conversion of the DVI file to a SVG image
if [ -f ${filename}.dvi ]
then
if [ "${ext}" = "svg" ]
then
! dvisvgm -n1 ${filename}.dvi &> ${filename}.dat
fi
fi
--- 62,78 ----
rm ${filename}.{dvi,out,bsl,dat,log,aux,png,svg} &> /dev/null
# Creation of the DVI file
! platex -shell-escape -interaction=nonstopmode ${filename}.tex > ${filename}.out
# Conversion of the DVI file to a SVG image
if [ -f ${filename}.dvi ]
then
if [ "${ext}" = "svg" ]
then
! dvipdfmx ${filename}.dvi &> ${filename}.dout
! pdfcrop ${filename}.pdf ${filename}_.pdf &>> ${filename}.dout
! mv ${filename}_.pdf ${filename}.pdf
! dvisvgm -n1 -P -e ${filename}.pdf &> ${filename}.dat
fi
fi
苦労した点など
- 日本語が出なかったのは、
latex
が日本語に対応してなかったのと、dvisvgm
が日本語フォントにうまく対応してくれていないため。 -
platex
の出力をちゃんと表示するためには、やはりdvipdfmx
に頼らざる得ない。 - しかし、
dvipdfmx
はちゃんとした boundary-box を含めていない。 - なので、
pdfcrop
で文字のあるところだけ切り出す。 - 最終的な出力ファイルのファイル名が
${filename}.svg
と決め打ちのようなので、それに会うようにファイル名の変更などしている。
あまりテストしてないので、不具合があれば、コメントなどしてみてください。時間があれば、対応するかもしれません。