SVG が TeX バックエンドでサポートされないのはなぜですか?

SVG が TeX バックエンドでサポートされないのはなぜですか?

私はいつも、SVG が多くのドキュメント作成ツールにとってなぜそれほど問題なのか疑問に思っていました。たとえば、MS Office ではそれができませんし、Libre Office で使用できるのは、私が知る限り非常に単純な SVG だけです。Latex でも適切に使用できず、手動で変換してビットマップ グラフィックとして使用するか、InkScape などの外部ツールによって自動的に変換する必要があります。InkScape は気に入っていますが、これでは満足できません。

特に Latex や TeX では、SVG のサポートを期待していました。学術界では多くの人が直接的または間接的に使用しており、細部にまで細心の注意を払っているため、作品に SVG を含めるためにこのような回避策を取らなければならないのは奇妙に思えます。PDF で無制限にズームでき、たとえば図表にピクセル化された線ではなく、鮮明ではっきりとした線が残る PDF があれば、とても便利です。SVG は PDF で使用される前に変換されるため、ピクセル化された線が残ることはありません。

では、なぜ TeX バックエンドに SVG サポートがまだないのでしょうか? 実装するのはそんなに難しいのでしょうか?

TeX バックエンドについてはあまり詳しくありません。基本的には、それが存在し、あなたのものを PDF ファイルに変換するということしか知らないので、この質問は素朴なものかもしれません。一方、SVG はすべてのブラウザーとほぼすべての画像ビューアー ソフトウェアでサポートされているので、SVG は可能であると思います。おそらく、PDF 形式自体が SVG の組み込みをサポートしていないため、PDF 形式が変更されるまで、TeX バックエンドを変更して SVG を許可するのは意味がないということでしょうか。

答え1

従来のTeXでは、どれでもグラフィック フォーマットの場合、dvi ファイルには、dvi ドライバによってインクルードされるグラフィック ファイルへのポインターのみが含まれます。TeX は、残すスペースを知るだけでよく、これは BoundingBox コメントまたは のオプション引数から読み取ることができます\includegraphics

ドキュメント用に生成している形式であれば、グラフィック形式を含める方が (通常は) はるかに簡単です。これは、dvi ドライバーが「理解」する必要がなく、ストリームにコピーするだけなので、たとえばdvipsEPS ファイルはそのまま出力にコピーされるので含めることができます。同様に、jpg ファイルや、PostScript ビットマップに簡単に変換できる特定のビットマップ形式も含めることができます。

pdftex の場合も状況は同様ですが、EPS ファイルは処理できませんが、PDF を書き込む場合は pdff を処理する方がはるかに簡単であるため、PDF ファイルは処理できます。

pdftex で EPS を処理するには、外部の EPS から PDF への変換プログラムが必要です。このプログラムは、TeX からシェル エスケープによって呼び出される場合がありますが、概念的には (そして実際は) まったく別のものです。

SVG の場合も状況は同じです。SVG (例: dvisvgm dvi ドライバー) を作成する場合は、EPS や PDF よりも SVG を含める方が簡単です。一方、PostScript や PDF を作成する場合は、ループ内で変換プログラム (通常は incscape) が必要です。これもシェル エスケープの背後に隠され、必要に応じて TeX から呼び出される場合があります。ただし、最終的な目的が PDF ドキュメントに含めることである場合、SVG をビットマップではなくスケーラブルな形式 (PDF または EPS) に変換する必要があります。

答え2

TeX コンパイラを作成している人の立場に立って考えてみましょう。画像を何らかの形式に変換するプログラムはたくさんあります (inkscape、imagemagick などconvert)。では、複数の形式をサポートすることに時間を費やす必要があるのでしょうか。それは、本質的にはコンバータを最初から再実装するのと同じ作業です。

特に、SVG形式には台所の流し以外すべて: 背景色パターンを使用してカスタムフォントでレンダリングされた曲線ベジェパス上の双方向中国語テキストから、本格的なJavascript インタープリターああ、恐ろしい。いや、結構です。バグを修正し、コア機能を改善することに時間を費やした方がよいでしょう。

(確かに、ほとんどのコンバーターは SVG の完全な機能セットをサポートしていませんが、コンセプトは変わりません。)

したがって、実際には 1 つの形式 (または 1 つのビットマップ形式と 1 つのベクター形式) をサポートするだけで、ユーザーには、グラフィックスをその形式に変換する多数の外部ツールの 1 つを使用するように指示します。幸いなことに、ユーザーのほとんどは賢い UNIX ユーザーなので、Makefile やビルド スクリプトの使い方を知っています。

優秀な人になりたいなら、 から への自動変換をサポートすることもできますepsが、それもあなたの責任ではありません。または、メンテナーとチャットして、 を導入するように依頼することpdfもできます。latexmkカスタム依存関係なので、彼ら側から自動化することができます。

要約:プログラマーは車輪の再発明を好まない

答え3

SVGグラフィックの作成は、dvisvgmTeXLive ディストリビューションのパッケージ。これは、DVI ファイル (およびではなく で生成) を変換することによってtex機能しlatexます。pdftexpdflatex

関連情報