dvipdfmx が出力するメッセージを網羅的に知りたい

dvipdfmx が出力するメッセージを網羅的に知りたい

- ya ra の投稿
返信数: 3

dvipdfmx がターミナルに出力するエラーメッセージや警告のパターンについて知りたいと考えています。

現在、VS Code の LaTeX Workshop 拡張機能には dvipdfmx に対応したログパーサが用意されておらず、自分で実装・PR することを検討しています。
しかし、そのためには dvipdfmx がどのような形式でエラーメッセージや警告を出力するのか、体系的に把握する必要があります。

以前、この件についてリポジトリに issue を提出したのですが、「メンテナは dvipdfmx を使用していないためコミュニティの助けが必要」との回答をもらいました。(参考
そのため、自分で対応を進めたいと考えています。

dvipdfmx のエラーメッセージや警告メッセージには、どのような種類・パターンがあるのでしょうか。あるいは、それらを網羅的に把握する方法があれば教えていただけると助かります。

なお、かなり古いバージョンではメッセージの形式が異なることを認識しています。しかし、本件では現在一般的に利用されている比較的新しいバージョンのみを対象とし、過去バージョンとの互換性は考慮しない予定です。

他のログパーサについて

LaTeX や BibTeX 等のエラーメッセージを補足するログパーサは以下のディレクトリにあります。

https://github.com/James-Yu/LaTeX-Workshop/tree/master/src/parse/parser

現在把握しているメッセージパターン

以下のメッセージパターンを把握しています。

  • dvipdfmx:warning:
  • dvipdfmx:fatal:
  • No output PDF file written.

これ以外にも考慮すべき典型的なメッセージの出力パターンがあれば知りたいです。

ya ra への返信

Re: dvipdfmx が出力するメッセージを網羅的に知りたい

- 和田 勇 の投稿

検討済みと思いますが、また、典型的 とは意趣が異なるかもしれませんが、文字列検索してみてはいかがでしょうか。

以下は macOS 環境で試したコマンドです。Windows 環境の場合、類似のツール導入が必要と思います。

  • 必要なツール

    • git ... TeXLive のソース入手にため
    • ripgrep (rg) ... 文字列検索のため
    • (補足)strings ... バイナリファイルに組み込まれたテキスト情報の取得のため
  • ソースから検索する方法

    •  ソース入手l情報 ... url = https://github.com/TeX-Live/texlive-source.git

    • 上記関連ディレクトリ ... texlive-source/texk/dvipdfm-x

    • 検索パターン ... rg -C1 --sort path -i -w -e warning -e fatal -e error -e not -e '.nno output' -e 'could not' -e stderr -e WARN -e missing

    • -C1 ... 検索された前後を表示
    • -e stderr および -e WARN ... エラー警告メッセージを出力する際の関連文字列情報

  - vscode でビルド時の dvipdfmx のプロセスで stderr を分離取得しても良いかもしれません

- そのほかのオプションは `rg --help` を参照してください
  • (補足)実行可能な dvipdfmx バイナリに組み込まれたメッセージ検索する方法

  which dvipdfmx | xargs strings | rg -i -w -e warning -e fatal -e error -e not -e 'no output' -e 'could not'

 

和田 勇 への返信

Re: dvipdfmx が出力するメッセージを網羅的に知りたい

- ya ra の投稿

和田さま、ありがとうございます。

検討済みと思いますが

恥ずかしながら、ソースから検索する手立てがすっぽり頭から抜けていました。

https://github.com/TeX-Live/texlive-source/tree/trunk/texk/dvipdfm-x からソースを取得し検索しました。すると、次の部分を確認することで必要な部分を抽出することに成功しました。

  • WARNERROR 関数
  • printf(stderr

これをベースにログパーサを作成したいと思います。

(補足)実行可能な dvipdfmx バイナリに組み込まれたメッセージ検索する方法

バイナリからメッセージを検索する方法があることも知りませんでした。今回はソースから検索したため活用しませんでしたが、ご教示しただきありがとうございます。

ya ra への返信

Re: dvipdfmx が出力するメッセージを網羅的に知りたい

- ya ra の投稿

和田さまのご助言もあり、dvipdfmx に対応したログパーサを LaTeX Workshop に導入することが出来ました。 ありがとうございました。ver 10.14.0 以降で利用できます。

https://github.com/James-Yu/LaTeX-Workshop/blob/master/CHANGELOG.md#10140---2026-04-08

LaTeX Workshop をご利用の方はぜひ dvipdfmx のメッセージも解析される様子を楽しんでいただけると幸いです。