LaTeX 出力メッセージの改行抑制

LaTeX 出力メッセージの改行抑制

- 井汲 景太 の投稿
返信数: 7
LaTeX でタイプセットする時、画面と log ファイルにいろいろメッセージが出ますが、長いメッセージが出るとき、80桁目(*)に LaTeX が改行を入れて語句が途中でちぎれてしまうことがあります。こんな感じです。
./xxxxxxxxxxxxxxxxxxxABC.tex:10: Preview: Snippet 4 ended.(655359+183500x226099
20). 
出力を解析するプログラムで parse が失敗することがあるのでこの改行挿入を抑制したいと思っているのですが、コマンドオプションや環境変数の設定などで簡単に実現する方法はあるでしょうか。
latex --help、man latex、texdoc latex の出力は見てみたのですが、それらしい記述は見つけられませんでした。

* 80とは限らず、79だったりすることもあるようです。
井汲 景太 への返信

Re: LaTeX 出力メッセージの改行抑制

- 前田 一貴 の投稿
max_print_line という環境変数で1行の最大の長さを指定できるようです.
TeX Live のデフォルトでは79になっています.

参考:
https://tex.stackexchange.com/questions/52988/avoid-linebreaks-in-latex-console-log-output
前田 一貴 への返信

Re: LaTeX 出力メッセージの改行抑制

- 井汲 景太 の投稿
そのものずばりですね。うまく行きました。どうもありがとうございました。
井汲 景太 への返信

Re: LaTeX 出力メッセージの改行抑制

- 北見 けん の投稿
これはいいことを伺いました。ありがとうございます。
“環境変数”とありましたが、私の場合は texmf.cfg にあった
max_print_line = 79
というところを書き換えることでうまくいきましたので、報告まで。
(私のところはすごく古い W32TeX なので、参考にならないかもしれませんが)

## TeXのソース(tex.web)を見ると、
## 「これらのパラメータの値を変更するには INITEX の再コンパイルが必要だ」
## と書かれていますが、
## これらのパラメータが texmf.cfg 内に見られるものであることから推察するに、
## web2c などへの変更時点でパラメータの値の与えかたが、
## ハードコーディングからcfgファイルの読み込みに変更されていたのですね。
## なるほど。
北見 けん への返信

Re: LaTeX 出力メッセージの改行抑制

- 北見 けん の投稿
ここに書いたように、texmf.cfg 内の記述を
max_print_line = 1000
と書き換えて使っていたのですが、
よくわからない不具合に遭遇したので、
一応、書き留めておきます。

metapost を走らせたところ、
Ouch---my internal constants have been clobbered!---case 3
というエラーが出るようになりました。

見たことのないエラーだったので Web 検索したところ、texmf.cfg の内容に問題があるというような情報を
見かけたので、よくわからないまま試しに上記の設定を
戻してみたところ、エラーが出なくなりました。
一体どういうことなのかよくわかりませんが、
原因追及は私の手に余りそうなので、あきらめました。

北見 けん への返信

Re: LaTeX 出力メッセージの改行抑制

- Z. R. の投稿

昔のWEB版のMetaPostのソースを見ると、次のようになっています。

@<Check the ``constant'' values for consistency@>=
bad:=0;
if (half_error_line<30)or(half_error_line>error_line-15) then bad:=1;
if max_print_line<60 then bad:=2;
if emergency_line_length<max_print_line then bad:=3;

つまり max_print_lineemergency_line_length を超えてしまうと、不正な設定を見なされるようです。(メッセージの “case 3”はこの bad の値です。)

そして、この emergency_line_length の値は255であり、Web2C版でもこれはハードコード定数のままです。従って、texmf.cnf の max_print_line の値は255が上限である、ということになります。


現在のCWEB版のMetaPost(mplib)のソースの中で emergency_line_length を探すと、次のような記述が見つかります。

@ There used to be a check against |emergency_line_length| here, because
it was believed that processing programs might not know how to deal with
long lines. Nowadays (1.204), we trust backends to do the right thing.

正確な意味は解りませんが、まあ“そういうこと”のようです。取りあえず、max_print_line=1000 にしても設定チェックに引っかかることはありません。

Z. R. への返信

Re: LaTeX 出力メッセージの改行抑制

- Z. R. の投稿

なお、max_print_line について「mpostでは250で我慢するが、他のTeXなどは1000にしたい」という場合は、次の設定が使えるはずです。

max_print_line.mpost = 250
max_print_line = 1000
Z. R. への返信

Re: LaTeX 出力メッセージの改行抑制

- 北見 けん の投稿
なるほど、そういうことでしたか。
よくわかりました。

かなりマイナーな話だと思って あまり期待せずに書き込んだのですが、
あっという間に解説していただけて、ちょっと感動しています。

ありがとうございました。