Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

imgmath生成ロジックの改良 #868

Closed
kmuto opened this issue Nov 6, 2017 · 1 comment
Closed

imgmath生成ロジックの改良 #868

kmuto opened this issue Nov 6, 2017 · 1 comment

Comments

@kmuto
Copy link
Owner

kmuto commented Nov 6, 2017

  • m, texequation呼び出しの都度生成している。
  • SHA256 hashで一意化はしているが、重複チェックしていないので、何度も同じものを作っている。
  • dvipngの都合で日本語不可。
  • プリアンプルなど決めうち。
  • latex, dvipngのパスやオプションなど決めうち。

軽量なドキュメントならこれでもいいのかもだけど。

  • 重複チェックは存在確認して存在すればスキップすればいいので簡単にできそうではある。
  • プリアンプルはconfig.ymlのパラメータで持たせるのはちょっと大変。プリアンプルだけメソッド切り出して、review-ext.rbで上書きしやすいようにする?

「呼び出し都度」「日本語不可」が大きめの問題。dviからでなくpdfまで作って切り出す方法なら日本語もいけるのだが、都度だと無駄な時間がかかる。

  • pdfcrop / pdftoppm / ImageMagick / RMagick などを使っていくとした場合、ユーザのインストール負担が重め? Windowsだとどこまでが許容か。
  • htmlbuilderレベルではハッシュパスを入れるだけにしておいて、数式は別のファイルにストックしておき、makerで最後にまとめてコンパイル・切り出し をしたほうが妥当。
@munepi
Copy link
Contributor

munepi commented Apr 22, 2018

latexを走らせているところを 2>&1 >/dev/nullぐらいしないと、現状 epubmaker 実行時に目がチカチカしていますね。

数式中の日本語表示について、別の案件で、メソッド make_math_image を上書きして対処ました。

    def make_math_image(str, path, fontsize = 10) # 12
      fontsize2 = (fontsize * 1.2).round.to_i
      texsrc = <<-EOB
\\documentclass[10pt,uplatex]{jsarticle}
\\RequirePackage[utf8]{inputenc}
\\RequirePackage[prefernoncjk]{pxcjkcat}
\\cjkcategory{sym18,sym19,grek}{cjk}
\\usepackage{amsmath}
%%\\usepackage{amsthm}
\\usepackage{amssymb}
\\usepackage{amsfonts}
\\usepackage{anyfontsize}
\\usepackage{bm}
\\pagestyle{empty}

\\begin{document}
\\fontsize{#{fontsize}}{#{fontsize2}}\\selectfont #{str}
\\end{document}
      EOB
      Dir.mktmpdir do |tmpdir|
        tex_path = File.join(tmpdir, 'tmpmath.tex')
        dvi_path = File.join(tmpdir, 'tmpmath.dvi')
        pdf_path = File.join(tmpdir, 'tmpmath.pdf')
        File.write(tex_path, texsrc)
        ## 
        ##  * latex -> uplatex: destroy the LaTeX typesetting log
        ##  * dvipng -> sips (pre-installed in macOS): set output resolution to 144 dpi
        # system("latex --interaction=nonstopmode --output-directory=#{tmpdir} #{tex_path} 2>&1 >/dev/null && dvipng -D 144 -T tight -z9 -o #{path} #{dvi_path}")
        system("uplatex --interaction=nonstopmode --output-directory=#{tmpdir} #{tex_path} 2>&1 >/dev/null && dvipdfmx -o - #{dvi_path} | pdfcrop - #{pdf_path} && magick -density 200x200 #{pdf_path} #{path}")
        out, status = Open3.capture2e(cmd)
        unless status.success?
          error "latex compile error\n\nError log:\n" + out
        end
      end
    end

@kmuto kmuto mentioned this issue Sep 3, 2018
9 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants