

「互換性」はあらゆるソフトウェア，プログラミング言語において頻出のワードのように思います。これを TeX / LaTeX
においてどう捉えるのが良いのか，という問いはタブーかもしれませんし，ここで質問するのは場違いかもしれませんが，敢えてさせてください。

## TeX / LaTeX における「互換性」とは何か

一つの見方として，「ある同一のソースを **処理した組版結果**
が，いつの時代のどんなディストリビューション(*1)を使っても，完全に同一になる」というのがありえると思います。これが最も厳格なものでしょう。

別の見方として，「ある同一のソースが，いつの時代のどんなディストリビューションを使っても，コンパイルが通る」（エラーも出ないし，警告も増減しないが，組版結果の同一性は必ずしも問わない）というのもあるかもしれません。

他の見方もあるのかもしれません。要は，「互換性」という言葉を使うとき／見かけたときに

  * 「互換性」をどの割合の人がどのように認識しているのか
  * それぞれの「互換性」がどの程度重要なのか

がわかりづらいと思います。TeX / LaTeX
を使っている方々のお考えがどのように分布しているか，参考になりそうな資料をご存じないでしょうか。（そのような回答が集まるのが最善ですが，もしそれに該当しなくても，次点として「自分ソース」ということで主観での回答も許容したいと思っています。）

  * 開発に近い方
  * 商業出版社の方（編集・校正・製版 etc.）
  * サークル等で出版物をされている方（編集・校正・製版 etc.）
  * 主に投稿論文等を執筆されている方

など，いろいろなバックグラウンドの意見があると思います。回答でもコメントでも良いので，思うところがあればご教示ください。

(*1) 「ディストリビューション」とは，ここでは TeX Live と W32TeX
の違いや，リリース／更新された年次・日付の違いによって区別されるもの，とします。Linux や Windows
といったプラットフォーム毎の違いもあるかもしれませんが，この違いをバイナリ単位で完全に吸収することはほぼ不可能と思われるので，除外します。

（質問は適切な形／有意義なものになるように，適宜修正してください。不適切であれば close してくださっても構いません）


CC BY-SA 3.0
2018-02-01T11:18:36.787
41382
2018-12-24T05:14:56.420
2018-12-24T05:14:56.420
19110
27160
question
latex tex
TeX / LaTeX における互換性


書く側ではなく、主に編集する立場から意見を言わさせていただきます（つまり、ソースは自分です）。

自分がTeX/LaTeXのファイルを見るとき、編集するときに求め、考えることは以下の2つ要素です。

  * その記号やら処理がどのような意図や目的を持って入れられたものなのか 
  * コンパイルした結果、大体どのような完成形を見せるのか

よって、互換性については、何年も前の文書でも、筆者が意図した形と同一でなくとも、ある程度問題なくコンパイルができるようにする程度で問題ないと考えます。

例えば、`$\times$`が、✕ではなく、*に変わっていても、それが「掛け算を表す2項演算子」であることがわかれば良いのです。

もちろん、書く側にはその場しのぎのアレな処理をするのではなく、目的を持ってコマンドや文章を書いてもらいたいですが。


CC BY-SA 3.0
2018-02-01T12:19:04.347
41384
2018-02-01T12:19:04.347
27239
41382
answer


ニュアンスが違うかもしれませんが，資料に基くTeXの（あるいはLaTeXも）意味での互換性はTRIP testが通ることといえるかもしれません．  
<http://texdoc.net/texmf-dist/doc/generic/knuth/tex/tripman.pdf>


CC BY-SA 3.0
2018-02-01T12:50:17.053
41385
2018-02-01T12:50:17.053
27049
41382
answer


出版社の立場です。TeX/LaTeXの互換性については、OSSの利用者として、下記の2点が満たされることだけが重要だと考えています。

  1. 開発者が「より良い」と考える変更は、バグ修正であれ機能追加であれ、積極的に実施してほしい
  2. ただし、ある箇所のバグ修正や機能追加により、他の部分で予期しない変更が起きないでほしい

一般にソフトウェア開発では、この2つ機械的に実現するために、リグレッションテストを取り入れていると思います。実際、TeXエンジンについては、@yuw
が参照しているTRIP test（現在のTeXエンジンはe拡張されたものなので実際にはe-TRIP test）が事実上のリグレッションテストです。

その上のフォーマットやクラスの挙動についてのリグレッションテストとしては、[LaTeX3チームがLaTeX2.09からLaTeX2eへの移行のときに導入したもの](http://tug.org/TUGboat/tb18-4/%20tb57mitt.pdf)があります。これは、数百のテストファイルを`\tracingall`で処理したときの`.log`の差分を比較するというものです。現在でもLaTeX2eの開発ではこれが動いているとのことです。ただし、[現在のリグレッションテストシステム](https://www.latex-
project.org/publications/tb111mitt-l3build.pdf)は、`.log`に混ざるノイズ（OS間の差など）を`texlua`で解消するようにしたものへと進化していると2014年のTUGで聞きました。

なお、開発者が「より良い」と考える変更の妥当性については、他のOSSと同じように、開発者らが独裁的に決定することだと考えます。商業出版社でも使われているアプリケーションなので、従来の挙動を維持することを強く求める利用者が出てくることは想像に難くありませんが、上記の1に関する最終決定はOSSの開発者が有する権利だと思います。そのうえで利用者としては、コンテナ化などで自衛するか（[手前味噌ですが参考](http://note.golden-
lucky.net/2015/04/texdocker.html)）、そうした面を考慮した技術サポートを専門家に依頼すべきだろうと考えています（他の多くのOSSも同じような構造でコミュニティや経済が成り立っているように見えます）。


CC BY-SA 3.0
2018-02-02T02:12:40.287
41396
2018-02-02T02:12:40.287
27053
41382
answer