| デバイス非依存(DVI) | |
|---|---|
| ファイル名拡張子 | .dvi |
| インターネットメディアの種類 | application/x-dvi (非公式) |
| 開発者 | デビッド・R・フックス |
| フォーマットの種類 | 書類 |
デバイス非依存ファイル形式(DVI )は、 1979年にDavid R. Fuchsが設計したTeXタイプセッティングプログラムの出力ファイル形式である。 [ 1 ] TeXマークアップファイルとは異なり、DVIファイルは人間が読める形式ではなく、特定の画像形式、ディスプレイハードウェア、プリンタに依存しない方法で文書の視覚的なレイアウトを記述したバイナリデータで構成される。DVIファイルは通常、DVIファイルをグラフィカルデータに変換する2番目のプログラム(DVIドライバと呼ばれる)への入力として使用される。たとえば、ほとんどのTeXソフトウェアパッケージには、ユーザーのコンピュータディスプレイでDVIファイルをプレビューするプログラムが含まれており、このプログラムはドライバである。ドライバは、DVIから一般的なページ記述言語(PostScript、PDFなど)への変換や印刷にも使用される。
TeX マークアップは、少なくとも部分的にはDVI ファイルからリバース エンジニアリングされる可能性がありますが、このプロセスによって、特に元のマークアップで高レベルの TeX 拡張機能 (例: LaTeX )が使用されていた場合は、元のマークアップに存在するものと同一の高レベル構造が生成される可能性は低くなります。
DVI はPostScriptやPDFとは異なり、いかなる形式のフォント埋め込みもサポートしておらず、外部フォント名を参照するだけです (PostScript 形式と PDF 形式はどちらも、ドキュメント内にフォントを埋め込むことができます)。DVI ファイルを印刷したり、適切にプレビューしたりするには、参照するフォントがあらかじめインストールされている必要があります。
また、PDF文書形式と同様に、DVIは限定的な種類の「プログラミング」言語(DVIの場合は「機械のような言語」)を使用します。[ 1 ] DVIの終了により、PostScriptのような完全なチューリング完全なプログラミング言語ではないことが保証されます。
2004年現在、「TUG DVIドライバ標準委員会」によってDVIドライバが実装しなければならない仕様がまとめられています。[ 2 ]これは1992年のTUGboatの同名の記事に基づいているようですが、はるかに短いものです。[ 3 ]これらの文書ではエンディアンが指定されていませんが、DVIファイル自体を見ると、ビッグエンディアンであることが分かります。
DVIフォーマットは、コンパクトで機械可読性が高い設計となっています。この目的のため、DVIファイルは、Knuthの言葉を借りれば「機械のような言語」を形成するコマンドのシーケンスです。 [ 1 ]各コマンドは8ビットのオペコードで始まり、その後に0バイト以上のパラメータが続きます。例えば、~(10進数127)のグループのオペコードは、1文字を入力し、暗黙的なカーソルをその文字幅だけ右に移動します。一方、オペコード(10進数247)(DVIファイルの最初のオペコードでなければならないプリアンブル)は、少なくとも14バイトのパラメータと、最大255バイトのオプションのコメントを必要とします。 0x000x7Fset_char_i0xF7pre
より広い意味では、DVIファイルはプリアンブル、1つ以上のページ、そしてポストアンブルで構成されます。6つの状態変数、、、、、、は符号付き32ビット整数として保持されます。ここで、と は左上隅からの現在の水平および垂直オフセット(ページを下に行くほどオフセットが大きくなります)、とは水平方向のスペース値を保持し、とは垂直方向のスペース値を保持します。
これらの変数はスタックにプッシュしたり、スタックからポップしたりできます。さらに、現在のフォントfpushは整数値として保持されますが、オペコードまたはに遭遇したときに、他の状態変数とともにプッシュおよびポップされることはありません。フォント間隔情報はTFMpopファイルからロードされます。フォント自体は DVI ファイルに埋め込まれておらず、関連するop で定義された整数値によってのみ参照されます。(これは、ロードされたフォントごとに正確に 2 回実行されます。1 回は参照される前、もう 1 回はポストアンブルで実行されます。) fには最大 4 バイトの長さの整数値が入りますが、実際にはTeX は0 から 255 の範囲のフォント番号のみを出力します。 fnt_defi
同様に、DVI形式は最大4バイト長の文字コードをサポートしますが、TFM形式が0~255の範囲に制限されているため、一般的には0~255の範囲しか使用されません。DVIファイルの文字コードは、処理対象のフォントの文字エンコーディングではなく、現在のフォントの文字エンコーディングを参照します。つまり、例えばEBCDICベースのシステムは、同じフォントがインストールされていれば、 ASCIIベースのシステムで生成されたDVIファイルを処理できます。
DVIフォーマットは、最も基本的な白黒ボックス以外のグラフィックをサポートしていません。代わりに、DVIには、スペシャル(\specialTeXでは コマンドで表現されます)と呼ばれる汎用的なエスケープ/拡張メカニズムがあり、これによりグラフィック(およびカラー)は後処理フィルタに委ねられます。DVIスペシャルは数多く存在し、その中で最も有名なのはPostScriptスペシャルですが、tpicなどの他のプログラムにも独自のスペシャルがあります。[ 4 ] : 6, 17
DVIファイルは、読み取りや印刷のためにPDF、PostScript、またはPCL形式に変換されることがよくあります。また、DVIビューアを使用して直接表示することもできます。
LaTeX文書を画面上でプレビューしたり修正したりできる最初のDVIプレビューアはAmiga上で動作しました。[ 10 ] [ 11 ]
dvipdfは、DVIファイル( TeXで生成)をPDFファイルに変換するツールです。Ubuntuなどの現在のLinuxディストリビューションでは、 dvipsとGhostscriptの薄いラッパーとして利用されており、Artifex Software(Ghostscriptの開発元)が著作権を所有しています。[ 12 ] 1990年代後半にSergey Lesenkoによって、dvipsの改良版とされる、おそらく同じ名前の別のプログラムが発表されましたが、[ 13 ] [ 14 ] [ 15 ] 、リリースされなかったようです。[ 16 ] [ 17 ]
dvipdfmは、Mark A. Wicksが開発したDVIからPDFへのトランスレータです。dvipdfmの初期の資料には、dvipdfmを作成した理由として、Lesenkoのdvipdfがあまり利用できなかったことが明記されています。[ 18 ] dvipdfmは、ブックマーク、注釈、サムネイル、dvipsスペシャル( METAPOST出力などのEncapsulated PostScript(.eps)ファイルの組み込みを可能にする機能)やJPEGおよびPNG画像の組み込みなど、 PDF形式の新しい特殊機能のほとんどをサポートしています。dvipdfmの他の機能には、部分的なフォント埋め込み(ファイルサイズの削減)や、内部のPDF文書ツリーのバランスをとって大きな文書のレンダリングを高速化する機能などがあります。[ 4 ] : 798 これらの機能の多く(.epsファイルの直接サポートを除く[ 19 ] )は、TeXを直接PDFにタイプセットするpdfTeXにも存在します。 2004年版のLaTeXガイド第4版では、以下のように比較しています。[ 20 ]
dvipdfm プログラムは、あらゆる出力のための汎用的な中間フォーマットとして DVI を使用するという TEX 本来の精神を受け継いでいます。純粋主義者はこの理想を尊重するかもしれません。結局のところ、TEX を書き直して PostScript 出力を直接生成しようと考えた人は誰もいなかったのです。とはいえ、TEX が発明されたのは、単一のプリンタ仕様がこの分野を支配していなかった時代だったことを忘れてはなりません。今日では、PDF は単なるプリンタ フォーマットではなく、文書を電子的に表現する手段となっています。これだけでは、DVI から PDF へのコンバータよりも pdfTEX を好む理由にはなりませんし、処理ステップを省略できるという理由も理由にはなりません。決定的な論点は、pdfTEX が信頼性が高く、堅牢で、柔軟性に富んだプログラムとして確立されていることです。結局のところ、どちらのプログラムがより使いやすく、どちらが特定のユーザーにとってより良い結果をもたらすかという問題になるでしょう。
dvipdfmxは、DVIからPDFへの変換ツールdvipdfmの拡張版であり、TeX Live 2014 [ 21 ]やMiKTeX 2.9 [ 22 ]などの現在のTeXディストリビューションに含まれています。dvipdfmxプロジェクトの主な目標は、東アジア言語のマルチバイト文字エンコーディングとCJK文字セットをサポートすることです。 [ 23 ] dvipdfmxは、 XeTeXにも(多少修正された形で)含まれています。[ 4 ] : 798
2008年版のLaTeX Graphics Companionでは、次のようなワークフローの提案がなされている。[ 4 ] :803
どの方法を採用すべきかは、主に含めたいグラフィック素材によって異なります。ほとんどの素材がEPS形式の場合、最も簡単な方法はlatex、次にdvips、最後にps2pdfです。すべてのグラフィックファイルが既にPDF形式で、JPEGやPNG画像も含まれている場合は、pdflatexを使用する方がより直接的な方法です。latexとdvipdfmxプログラムを実行することで、両方の方法を組み合わせることもできます。PSTricksを頻繁に使用する場合は、[...] pst-pdfパッケージを検討してください。
最初のDVItypeプログラムは1979年にDavid Fuchsによって設計された。
{{cite book}}: CS1 maint: 複数の名前: 著者リスト (リンク)