doraTeX / TeX2img

TeX2img for macOS
https://tex2img.tech
Other
26 stars 2 forks source link

LaTeX Compiler Path に独自スクリプトを指定した場合の対処 #83

Closed doraTeX closed 6 years ago

doraTeX commented 6 years ago

LaTeX Compiler Path として,通常は platex のようなLaTeXコンパイラのパスを直接指定することを想定していますが,そこに(ptex2pdf の呼び出しをさらにラップするような)独自スクリプトを指定したいという要望がありました。

その場合,LaTeX Compiler Path としてそのスクリプトのパスを指定すれば大半の部分はうまく動きますが,「pdfcrop類似処理のために呼び出すpdfTeXの本体が LaTeX Compiler に指定されたコンパイラと同ディレクトリに存在することを仮定している」という部分が障害となります。

対処として,とりあえず,「その方法で見つからなかった場合は DVI Driver Path と同ディレクトリに pdfTeX バイナリが存在するかどうかをチェックする」(どちらの方法でも見つからなかった場合はエラーを返す)というステップを挟むことにします。

doraTeX commented 6 years ago

「LaTeX Compiler Path にコンパイラのパスを指定しなかった場合に発生する問題」がもう一件見つかりました。「入力ファイルと同じフォルダ上で作業」がONのとき,入力ファイルと同じディレクトリを TEXINPUTS に含める設定を行いますが,その処理で

[cmdline appendFormat:@"export TEXINPUTS=\"%@:`kpsewhich -progname=%@ -expand-var=\\\\$TEXINPUTS`\";", additionalInputPath, latexPath.programName];

となっており,そこで kpsewhich に対して LaTeX Compiler Path から取得した Compiler Name を渡すようになっています。よって,LaTeX Compiler Path に独自スクリプト名が指定されていると,何というコンパイラを指定しているのか分からず,kpsewhich を正しく実行できません。 まあ,これは現状の設計ではどうしようもない感じなので,「独自スクリプト指定」はあくまで本来のサポート外機能とし,どうしても「『独自スクリプト指定』かつ『入力ファイルと同じフォルダ上で作業』」ということがしたい場合は,その独自スクリプト名をコンパイラ名と同じ platex とかにすることで偽装して対応してもらう,としましょう。