LaTeX でコンテンツ構造とスタイルを分離しますか?

LaTeX でコンテンツ構造とスタイルを分離しますか?

HTMLでは、ここ10年ほど、コンテンツの構造とスタイルを完全に分離する動きが強くなっています。現在、ほとんどのWebサイトは、構造的なマークアップにはHTMLを使用し、そのマークアップの表示にはCSSを使用しています。これにより、同じコンテンツに異なるスタイルを適用することが非常に簡単になります。これがいかに強力であるかを知らない場合は、たとえば以下を参照してください。http://www.csszengarden.com/W3cの文書では、意味的マークアップとプレゼンテーション的マークアップの分離

私は LaTeX については比較的新人ですが、ウェブサイトのデザインはしばらくやっています。確かに分野は異なりますが、どちらもコンテンツをうまく表現するという同じことをやろうとしています。過去 6 か月間の LaTeX の経験から、コンテンツとスタイルの分離という概念は TeX の世界にはあまり浸透していないと感じています。たとえば、HTML+CSS で表のセルの折り返しルールを定義するのは、セルにクラスを追加し、CSS ドキュメントに 1 行追加するだけです。LaTeX では、このような恐ろしいこと

では、私が何かを見逃しているのでしょうか、それとも LaTeX でしょうか? コンテンツとスタイルを分離するというこの概念は、LaTeX の設計に使用されているのでしょうか? 単に実装が不十分なのでしょうか? 将来のバージョン (LaTeX3? ConTeXt?) では、より適切に実装される可能性はありますか?

注: LaTeX 開発者に悪意はありません。このシステムは、他の多くの理由から本当に優れています。ただ、この大きな穴と、それに関する議論がほとんどないことに気づき、その理由を不思議に思っています。

答え1

歴史

Knuth は、自身の知識と当時利用可能な技術の限界を考慮して、できる限りうまく資料をタイプセットしたいと考え、1970 年代後半に TeX を作成しました。彼の仕事はかなりうまくいったと一般に認められていますが、彼が試みていたのは、構造とスタイルを分離することではなかったことは確かです。

ランポート氏は、2 つの領域をより明確に分離する必要があると感じた 1980 年代半ばに LaTeX を作成しました。LaTeX は 1990 年代初頭に改訂され、現在のカーネルは 1994 年に作成されました (もちろんバグ修正済み)。これは HTML + CSS モデルよりかなり前のものであり、技術的な制限により、当時は LaTeX をさらに複雑化することは不可能でした (1994 年当時、LaTeX は多くの PC にとって大きすぎたため、チームはそれを圧縮するために非常に努力しました)。

HTMLの世界では、新しいタグを追加しても、それを知らないレンダラーは無視します。TeXではそうではありません。未知の制御シーケンスはエラーになります。そのため、新しい概念を追加して既存のドキュメントが機能すると期待することはできません。本当に重要です。したがって、1994 年に行われた決定は、今日の LaTeX にとって依然として重要です。

ConTeXt はより新しく、LaTeX よりも「すぐに使える」設計をはるかに多く分離しています。また、ConTeXt はカーネルの開発をより積極的に進めており、安定性に関して LaTeX とは異なるアプローチを採用しています。ただし、ConTeXt のアプローチは、LaTeX よりも「ユーザーに近い」設計を維持するという意味で、ある意味では LaTeX よりもプレーンな TeX に似ています。

入出力

HTML の世界では、ドキュメントは完全にメモリに読み込まれ、レンダリング用の DOM が構築されます。TeX は、少なくともすべてを自分でプログラムしない限り、そのようには動作しません。代わりに、TeX は行を読み取り、次の行に進む前にそれを処理します。(LuaTeX はこれを変更できますが、ConTeXt でも TeX モデルが主なものであることは変わりません。) そのため、外観を変更するために必要なアプローチは非常に異なります。

この分野について考えるときに心に留めておくべき重要なことは、人々が出力として何を望んでいるかということです。TeX の世界では、高品質のタイプセッティングに重点が置かれています。そのため、コンテンツの現実を反映するために、デザインを手動で調整することがほとんど常にあります。これは、「よく書かれた」HTML では行われません。XML で表現することはできますが、厳密な分離が破られることは確かです。私や他の人たちは、これは悪いことではないと主張します。最良の結果を得るには、手動による介入が必要なのです。

テーブル

質問ではテーブルについて具体的に言及されており、テーブル自体も検討に値すると思います。HTML では、テーブルはさまざまな目的で使用されています。TeX では、テーブルに対するアプローチははるかに制限されています。テーブルは TeX の世界では複雑な存在として有名ですが、Knuth は、テーブルが機能するのは驚くべきことだと指摘しました。ほとんどのタイプセット ドキュメントでは、テーブルは主に「正式なテーブル」として使用され、その「適切な」外観の範囲はかなり制限されています。そのため、CSS のようなコントロールをすべて提供する必要性は低くなります。

canaaerus が回答で述べているように、TeX の世界は委員会によって管理されているのではなく、誰も管理していないため、実装内容は個々のユーザーの希望によって異なります。LaTeX 用のテーブル パッケージにはさまざまな種類があり、さらに ConTeXt アプローチや\halignプレーン TeX の raw もあります。ただし、それらは主に他の問題を解決しようとしているため、ユーザーにとっての優先順位がどこにあるかがわかります。

将来に向けて

LaTeX3 プロジェクトのメンバーとして、私たちがコンテンツとデザインのより良い分離について議論していることは確かです。ここで心に留めておく価値のある問題の 1 つは、HTML + CSS モデルが必ずしもタイプセッティングに必要なものとしてうまく変換されるわけではないということです。この 2 つの領域には大きな違いがあり、それは決してそれほど単純ではないことを意味します。

より良いアプローチは、コード面でもインターフェース面でもTeXで機能する必要があります。実験コードオブジェクト間の関係を扱う(「l3ldb」)、そしてデザインの「テンプレート」どちらもこのエリアにあります。

答え2

コンテンツとマークアップを分離するという考え方は、TeX の開発者やユーザーにとって決して馴染みのあるものですが、TeX と HTML、そしてそれらのコミュニティの仕組みには、いくつかの根本的な違いがあります。

HTML は本質的には中央集権的に構成されています。Web 標準を開発する委員会 (W3C) があります。HTML ドキュメントのすべての作成者はこれらの標準に従って記述する必要があり、HTML インタープリタ (主に Web ブラウザ) の開発者はこれらの標準を実装する必要があります。

一方、TeX の場合は、状況が大きく異なります。明確な標準はありません。確かに、ほとんどのものは Knuth のオリジナルの TeX に基づいています。しかし、多くのものが追加されています。たとえば、現在では ConTeXt と LaTeX という異なるマクロ パッケージがあります。基本的な構文がまだ固定されていないことが簡単にわかります。LaTeX/の代わりにマクロを使いたいと誰もが言うことができます\。さらに、現在使用されている機能の多くはパッケージとして追加されています。これにより、TeX は非常に拡張可能になります。

ここから、違いの技術的な部分に移ります。TeX はチューリング完全です。一方、HTML は単なるマークアップ言語です。HTML では、ドキュメントの内容、構造、スタイルを指定しますが、TeX では、ドキュメントの構築方法のアルゴリズムを記述します。
もちろん、最も単純なケースでは、複雑なプログラミング構造を使用する必要はなく、TeX ドキュメントは、マークアップ言語で記述したものとそれほど変わりません。しかし、このような種類のドキュメントに関する限り、コンテンツとマークアップの分離は TeX で非常にうまく適用されていると私は主張します。

見てみるとあなたが言ったように、それはまさに文書がマークアップのようなものではなくなるポイントです。

答え3

コンテンツとスタイルを分離するというこの概念は、LaTeX の設計に使用されていますか? 単に実装が不十分なだけでしょうか?

使われていますが、必ずしも不完全に実装されています(歴史的な観点からは他の回答を参照してください)。むしろ、かなり低レベル

あなたできるLaTeX では、コンテンツとスタイルを厳密に分離する必要があります (実際、私はこれを強くお勧めします)。ただし、これを行うには、LaTeX のマクロ定義機能を利用する必要があります。

LaTeXには少し\chapterやなどのセマンティックマクロ\emph(もちろん他にもたくさんあります)。ドキュメントクラスやパッケージには、さらに多くのオプションが用意されています。たとえば、KOMAスクリプトクラスは、カスタマイズLaTeX によって提供されるセマンティック マクロのルック アンド フィール。

しかし実際には、必要なセマンティクスは、作成するドキュメントの種類によって大きく異なります。そのため、scrlttr2手紙を書くという特定のタスクに対してセマンティクス マクロを提供する のようなドキュメント クラスがありますが、これらは例外です。LaTeXは、ドメイン固有の意味的マクロを多数提供するのではなく、ドメイン固有のマクロを構築するための言語を提供します。

最終的には、ドキュメントに物理的なレイアウトマクロを使わず、セマンティックマクロのみを使用するようにしてください。\textbfいいえ、マクロを使用して記述します。なぜ太字のテキストが必要な場合。

マクロはドメインに特化しているため、必要なマクロのほとんどは自分で作成することになるでしょう。そのため、多くの LaTeX パッケージでは、これをできるだけ簡単にするツールが提供されています。たとえば、図の表示をカスタマイズするパッケージ (またはカスタム図タイプを作成するパッケージ。captionまたはを参照float) や、強力なマクロの作成を容易にするパッケージ (etoolboxおよび LaTeX3 のほとんど) があります。また、ソース コードの強調表示など、多くの特殊な使用例向けのパッケージもあります。

これらを使用すると、ほとんどの場合、ドキュメント全体で使用できるセマンティック マクロの単純なセットをまとめるのは比較的簡単です。それでも、私の修士論文のマクロ定義は、ドキュメント全体の約 6 分の 1 (SLOC で、コメントは削除) を占めています。

答え4

構造とスタイルの分離は、LaTeX と ConTeXt の基本的な利点の 1 つであることに、私は確かに同意します。とはいえ、実際には、それらを完全に混在させないようにすることは困難です。非常に単純なドキュメントのみが、スタイルとコンテンツを完全に分離できることが判明しています。実際のケースでは、中程度のサイズの本であっても、ほとんどの場合、最後の瞬間に微調整が必​​要になり、実質的に分離が崩れます。出版社である私にとって、100% の分離を実現するための最も実用的なソリューションは、コンテンツを常にドキュメントの構造を定義する xml ファイルに保存し、スタイルに関連するすべての指示を ConTeXt ファイルに格納することです。ConTeXt は非常に実用的な xml プロセッサです。もちろん、xml から XSLT を使用して LaTeX ファイルを簡単に作成し、必要に応じて LaTeX を使用することもできます。この場合、スタイルに関連するすべての指示を xsl ファイルに格納する必要があります。

関連情報