【状況説明と実現したいこと】
添付ファイル中の mytest-prv.tex と preview.sty と prauctex.def を同一ディレクトリに置いて、latex をかけたのち
dvips -Pwww mytest-prv.dvi -o mytest-prv.ps
を実行すると (latex と dvips は TeXLive2019 の、しばらく前にアップデートしたもの)ps ファイルは無事できたように見えるのですが、実際には壊れていて、atril で開こうとすると
typecheck -20
typecheck -20
typecheck -20
fish: 'atril mytest-prv.ps' terminated by signal SIGSEGV (Address boundary error)
というエラーで異常終了します(開けません)。ps2pdf にかけても ghostscript のエラーで中断します。私の所でできた dvi ファイルと ps ファイルは添付ファイル中に同梱してあります。
preview.sty と prauctex.def は公式の preview.sty, prauctex.def をちょっと改変したもので、差分はやはり添付ファイル中に patch-preview-sty, patch-prauctex-def として同梱してあります。
前景色・背景色の指定がちゃんと反映された ps ファイルを作りたいのですが、preview.sty や prauctex.def にどのような変更を加えればいいでしょうか?
同梱されている png ファイルは
dvipng -picky -noghostscript mytest-prv.dvi -o mytest-prv%03d.png
で作ったものですが、こんな感じで指定した色が反映されてほしいのです。
何点か補足します。
- 添付ファイル中では、前景色・背景色が hard code されていますが、実際に使うときは preview-latex が実行時に emacs の前景色・背景色を指定する予定です。usepackage の行も、実際には LaTeX ファイル中に直接書くのではなく、RequirePackage に置き換えて latex コマンドの呼び出しを
latex "\PassOptionsToPackage{...}{preview}\AtBeginDocument{\RequirePackage....}..." "\input" ファイル名
のような形で行います。
- \pagecolor が mytest-prv.tex と preview.sty の両方で指定されていますが、preview.sty の方は実際には適当な TeX macro にしておいて、実行時に上の latex コマンドの先行 TeX code の部分で \def\hogehoge{\pagecolor{blue}} みたいな感じで置き換える案を検討中です。\pagecolor の指定箇所が2ヵ所あるのは、後述する複数の呼び出し方のいずれでも機能するようにするためです。
【経緯の説明】
Ghostscript のバージョンが 9.27 になってから、preview-latex がエラーで動かなくなるケースが出てきました。具体的には、次の場合に発症します。
- LaTeX ファイルを pdflatex で処理する設定にしてある(デフォルト)
- emacs の前景色をカスタマイズして標準(黒)以外にしてある
1.の場合、preview-latex は、pdflatex を上のような特殊な呼び出し方をして作った pdf を pdf2dsc と gs を利用して画像ファイル(png 形式と思ってよいです)に変換するのですが、さらに 2. の場合、gs にトリッキーな ps code を食わせて、作られる画像ファイルの前景色を emacs と合わせようとします。ところが、gs 9.27 になってこのトリッキーな ps code が無効化されて、エラーが出るようになりました。
「何とかならないか」と Ghostscript 開発チームに相談したところ、
「セキュリティー上の理由からそうしたので、Ghostscript の側ではどうにかなる見込みはまずない。それより、最初からそういう色の着いた PDF を作るんではどうか?」ということでした。
それで、上記の 1. の場合は多少の問題は残るものの迂回策に至ったのですが、
preview-latex の動作としては
pdflatex+pdf2dsc+gs
のほかに
latex+dvipng と
latex+dvips+gs
という道筋もありえて、それらでは画像ファイルに期待した色が着きませんでした。latex+dvipng の方は更なる改修案が出て
で指定色が反映されるようになったのですが、残る latex+dvips+gs の方はこれではうまく行かず、
本フォーラムでの質問に至ったという次第です。
上述した \pagecolor が2ヵ所に重複しているのは、最初 pdflatex+pdf2dsc+gs 用に入れたものが latex+dvipng ではダメだったので新たに追加したことによります。
(以上)