0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

libreoffice の TeX 数式で日本語

Last updated at Posted at 2024-10-06

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 行目付近の latexplatex に。
    • 72 行目付近の dvisvgm の行を以下のように変更
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 と決め打ちのようなので、それに会うようにファイル名の変更などしている。

あまりテストしてないので、不具合があれば、コメントなどしてみてください。時間があれば、対応するかもしれません。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?