なぜ(複雑な)テンプレートの使用を避けるべきですか?

TeXnician 09/13/2017. 7 answers, 1.966 views
templates best-practices

この質問は、完全に理解できない複雑なテンプレートのユーザーを指すような参考になるように意図されています。

テンプレートとは何ですか? テンプレートが何であるかは明らかです。 多くの質問では、複雑なテンプレート(例:論文作成用)を扱い、ユーザーは特定のテンプレートを変更する方法を尋ねます。 多くの場合、テンプレートをまったく使用しないように提案されていますが、最初からドキュメントを書き上げます。

ユーザーが複雑なテンプレートを使用しないようにしなければならない理由は何ですか

3 Comments
CarLaTeX 09/10/2017
非常に良いアイデア! +1 +1
TeXnician 09/10/2017
@ CarLaTeXありがとう。 これらのテンプレートを使用しない理由は何ですか?
7 Christian Hupfer 09/10/2017
テンプレートは悪い時代です! タイポグラフィやTeX / LaTeXをまったく知らない多くの人々からのハックのマージがよくあります。

7 Answers


Keks Dose 09/11/2017.

私はユーザーです。 私はTeXとLuaのどちらも、»expl3«のどちらも知らなかった。

私はユーザーです。 私はコンピュータにtexliveやMikTeXをインストールしました。 私はLaTeXの紹介を読み、いくつかの基本的なパッケージについて知っていただけでなく、エディタが何であるか、エンコーディングが必要な理由、そしてbabel / polyglossiaについて学んだ。 私は読み込んでいるすべてのパッケージのマニュアルをtexdoc packagename (コマンドラインのtexdoc packagenameでマニュアルが作成されています)。 問題が発生した場合は、最小限の作業例を作成して助けを得ることができます。

私がテンプレートのユーザーであれば、その多くを逃したでしょう。 フラグメンテーションパッケージをメンテナンスされていないものと区別する方法はありません。 最小限の作業例を作成して助けてもらえません。

LaTeXを複雑なテンプレートで始めることは、自転車のサイクル方法を学ぶことなく、マウンテンバイクでのダウンヒルレースのようなものです。

2 comments
2 Ruben 09/11/2017
Au contraire。 Chromeを使用するにはC ++について知っていなければなりませんか? これは、LaTeX3チームが取り組んでいるLaTeX2(e)の基本的な問題です。LaTeX経由でドキュメントを作成する際のいくつかの層の明確な区別です。 LaTeX2eでは、これらのレイヤーは設計によって高度に干渉します。 それにもかかわらず、ユーザが単にコンテンツを入力し、必要に応じて簡単にいくつかのものをカスタマイズできる作業テンプレートを書くことは可能でなければならない。
1 TeXnician 09/12/2017
私はあなたの答えを受け入れました。なぜなら、この問題についての非理想的な見解であり、テンプレートを避ける方法を学ぶためのヒントです。

TeXnician 09/11/2017.

引用符で始めるには( Wikibookから):

あなたの友人があなたのテンプレートをあなたに与えたい場合、それはとても素敵なジェスチャーです。 Thanks, but no, Thanks 。 彼/彼女がそれに気づいていなくても、あなたの中にどれくらいの奇妙なものがあるのか​​信じられません。 これらはすべてあなたの書類に欲しくない小さなトリップワイヤです。 残念ながら、オンラインで見つけることができる多くのテンプレートについても同様です。

以下のテキストはいくつかの共通点をまとめたものです。 (以下のテキストでは、「テンプレート」という用語は、そこにあるすべてのコードを対象としています。完全な機能を備えたTeXドキュメントを提供しています。もちろん、どこからでも見つけることができるカスタムドキュメントクラスです。 )

非推奨コマンド

多くのテンプレートは、LaTeX 2.09のコマンドセットで構築されています。 これには最近の文書では使用しない\bfなどのコマンドが含まれています。 これらの古いコマンドは、使用したいかもしれないいくつかのドキュメントクラス(fi KOMA参照)で特にうまくいく可能性があります。

単一目的のテンプレート

テンプレートのもう一つの問題は、目的に合わせて作られた多くのテンプレートがあることです。 したがって、大学Xの論文テンプレートはおそらく大学Xのスタイル要件を満たしていますが、Yは必要ではありません。ほとんどのテンプレートはあなたがそれらを変更したくないため、Yでそれを使用しようとすべきではありません。

パッケージのオーバーロード

多くのテンプレートでは、パッケージ全体が読み込まれる傾向があります。 それらのうちのいくつかは必要でもなく、使用する必要のあるパッケージと衝突することがあります。 テンプレートの一部を書き直したり削除したりできますが、面倒です。

事前定義された構造と依存関係

一部のテンプレート(特に大きなプロジェクトの場合)は、イメージファイルや別のディレクトリのファイルにリンクするため、特定のファイルとフォルダのレイアウトを使用するよう強制します。 テンプレートには、すべてのディストリビューションでは配布されていないパッケージへの参照が含まれる場合もありますが、一部のパッケージのみ(またはダウンロードする必要があります)も含まれます。

テンプレートの名前が他のパッケージと衝突する場合(または、 thesis.clsように一般的でない場合)はさらに悪化しています。

タイポグラフィーの問題

他のすべての主題と同様に、あなたがしていることを理解する必要があります。 いくつかのテンプレートは書体の慣習を変え、ある特定のスタイルにあなたを強制したい。 タイポグラフィーが世界中で違うので、これは特に問題です。 アメリカのスタイルはドイツでは常に適用されませんfi

ほとんどの場合、あなたの国のタイポグラフィの伝統( booktabsなどを見てください)の中であなたのデータを提示する方法(それも重要です)を学ぶ方が良いでしょう。

提案

必要がない場合はテンプレートを使用しないでください。 大学で勉強しているときに特定のテンプレートを使用する必要がある場合は、それを使用する必要がありますが、スタイルを自由に選択できるのであれば、基本的なドキュメントを使い、LaTeXを学び、複雑なテンプレートを使わずに、あなたのニーズに合ったテンプレートを作成することができます。

2 comments
Ruben 09/11/2017
+1単純に真:)
3 Alan Munn 09/11/2017
+1これはすばらしい答えです。特に、テンプレートで見られるほとんどの問題を説明するポイント1と3です。 あなたはもう一つのことを忘れていましたが、バグ。 多くのテンプレートはクラッシュして悪いコードを持ち、多くの場合、互いに互換性のないパッケージとクラスを使用しています。 ( classicthesisが一番の例です)。

Ruben 09/11/2017.

免責条項:これはAdvocatus Diaboliの執筆です。

個人的に、私は@ TeXnicianのポイントにも完全に同意します。 文書を最初から構築することには非常に価値があります。 正確なニーズに合わせてください。 その過程で新しいことを学ぶ。

しかし、私はLaTeXユーザの非常に特殊な種類を記述しているので、これはいくつか欠けていると思います。 あまり勉強しなくてもシステムを使いたい人は、確かにあります。スペクトル全体が存在すると思います。 そして、これはOKです! なぜ、LaTeXのテンプレートをユーザが避けるべきでないのか。

公正であるために:テンプレートの使用の現在の状態は非常に災難です。 非常に多くの文書化されていない、無作法な、完全にオーバーロードされたテンプレートには、悪いハッキングが含まれています。 一方で、それらを選ぶユーザーがいます。 そして、私はこの質問がテンプレートの使用を止めることができないと確信しているので、ここでは、テンプレートを使用する傾向のあるユーザに対してアドバイスをしています。1)テンプレートのドキュメントか、コード。 2)誰かがテンプレートを最新の状態に保ち、John Doeのテンプレートを使用しないようにしているかどうかを確認します。「これをインターネットにアップロードしました。幸いです...」3)不完全なパッケージがないかチェックしてください。 これは初めに判断するのが難しく、おそらく数分の読書が必要になるでしょう。 経験則では、デフォルトでは20個以上のパッケージがお互いの下にロードされていると、まったく必要ないものがあるかもしれません。 4)悪いハッカーをチェックしてください。 確かに評価するのが最も難しい。 たぶんあなたのローカルTeXnicianに相談してください:)

それとは別に、テンプレート作成者のためのガイドラインを宣言し、許可されたLaTeXテンプレートライターに何らかの証明書を持たせることは有益です。 ガイドラインはかなり明白です、私は思う:

  • フォーマット: .styまたは.cls (IMOこれはパッケージのみに限られます)に従った.texファイルを設定します。
  • @samcarterのコメントのように、ユーザーにとっては分かりやすくするための意味のある名前です。
  • 一般化と特定の機能の健全なバランス
  • CTANのバージョンを維持
  • ドキュメンテーションの存在

理想的には、新規ユーザはLaTeXスタータガイドのテンプレートを指し示し、他のテンプレートは使用しないことを説明しましたが、これは本当にTeXの政治に関するものです。

5 comments
2 TeXnician 09/11/2017
+1ローカルTeXnician;)
Ruben 09/11/2017
@TeXnician、私たちはすべて行くと時々彼を参照する必要があります... :)ありがとう!
7 samcarter 09/11/2017
あなたのガイドラインに1つ追加することをお勧めしますか? 私のための良いテンプレートの重要なポイントは一意の名前です。これはユーザーが効率的にヘルプを検索するのに役立つ品質については何も言いませんが。 良い名前の例: cleanthesis 、悪い例の例: "thesis"
Ruben 09/11/2017
非常に良い@スカッカ! ありがとう。 私はこれを追加します。
1 Davidmh 09/12/2017
1つの良いテンプレートのソースは、NIPSのようなトップコンピュータサイエンスカンファレンスです。 彼らは毎年それらを更新するので、通常はかなりよく書かれており、任意のユーザーを念頭に置いています。 一方、ジャーナルは提出する必要がない限りは避けてください。

Fran 09/11/2017.

私はTeXnicianの回答(+1)と100%合意しているので、私はちょうどいくつかの側面を強調するつもりです:

  1. 初心者の方にとってテンプレートは非常に魅力的ですが、テンプレートはあなたにとって魅力的な仕事のほとんどを魔法のように遂行します:LaTeXが「無関係」を学びますが、最高のテンプレートを使っても前提は悲惨です。 コックが2度カラスする前に、あなたは自分の無知に直面するでしょう。

  2. あなたが待っている奇跡が増えるほど、間違いが増えます。 大きくチューニングされたクラスと無限のプリアンブルは、ほとんど素晴らしいビジュアルエフェクトのために作られていますが、作者以外の人たちの手にあってもうまく動作していても、予期せず使用することができます。 その結果は、しばしば初心者の悪夢でしかない、謎めいたエラーです。 例:

    LaTeXエラー:フロートが失われました。

    彼らはフロート、ジョージー、私と一緒にここにいると、あなたも浮かびます。

  3. テンプレート、カスタムクラス、およびマクロは、まともなドキュメントではなく、ソースコード内の簡単なコメントでさえありません。 したがって、痛みのデバッグエラーだけでなく、 また、テンプレートの機能を発見し、それらを使用する方法は迷惑になる可能性があります。

  4. あなたのディストリビューションにないカスタムクラスやパッケージの場合は、これらのファイルを作業ディレクトリまたは他の利用可能なパスに保持する必要があります。 時間が経つにつれて、どちらの場合も古くなったり紛失する危険性があります(ドキュメントを保存しますが、必要なファイルは保存しないなど)。 これは、配布標準クラスを使用して行われることはありません。

  5. 私たちは皆、私たち自身のやり方で物事をすることに戸惑いがあります。 科学誌に投稿する記事でさえ。 これが明らかにエディタ(あなたの作者の「創造性」を避けるためだけのテンプレートを提供しています)に満足していなくても。 私たちが複雑なカスタムテンプレートをカスタマイズすると、 \documentclass{article} \begin{document} text here \end{document}ように、より明確なものから\documentclass{article} \begin{document} text here \end{document}ましょう。


Marijn 09/11/2017.

宣言:LaTeXの教会の中で、偏差は罪ではありません。

テンプレートは例を提供します。 人々は、他の種類のドキュメントと比べて、非常に速い例から学びます。 スピードのほかに、コマンドや環境が実際に動作するのを見ることで多くの詳細が伝達されます。 プログラミングコースを教える人々はこれに同意し、LaTeXも変わりません。

テンプレートは、通常、デフォルト動作を変更する方法を含む、クラスとパッケージの多くの機能を示す完全な作業文書を提供します。 これは初心者でも経験豊富なユーザーにとっても非常に役に立ちます。 これは、あなたの頭のスタートを提供し、高度な機能を使用するために必要な分散した知識の大量収集の手間を軽減します(つまり、ユーザーはホイールを再開発する必要はありません)。

テンプレートを使用しないと、多くのユーザーは複雑な文書を作成することができません。 テンプレートを使用することができます。 高速。 個人的には、PhD論文テンプレートにとても満足していて、すばらしいドキュメントを書くことができました。また、LaTeXについて多くのことを学びました。

CTANの多くのパッケージには、定期的な文書のほかに、最も重要な使用事例を含むテンプレートが含まれていることは驚くべきことではありません。 それは役に立つので、そこにあります。

これまでのところ、良いニュースです。 悪いニュースは:オンラインで利用可能な多くのテンプレートは、書かれていない、彼らはすべての種類の問題を抱えていて、自分のニーズに合わせて修正しようとすると、新しい文書を一から作成し、物を一から書いてください。 @ TeXnicianの答えを見てください。 しかし、これも学習プロセスの一部です。 さまざまなテンプレートの経験を使って、ユーザーは良いテンプレートと悪いテンプレートを区別する方法を学びます。 役に立つものを使用し、残りを忘れてください。 LaTeXは難しく、イライラしています。それよりも難しくはありません。

3 comments
4 Ruben 09/11/2017
例からの学習は本当に重要です。 しかし(あなたの最後の段落に関して)私は、単に違うテンプレートを見れば、良いものと悪いものを教えてくれるのではないかと疑うでしょう。 実際、私は承認されたソース(LaTeXカーネルのドキュメントなど)ともちろんTeX.SXの質問を読んだときにだけレイアウトした悪いテンプレートから、いくつかの悪い習慣を「訓練」しました;)
2 Fran 09/11/2017
例を使って学ぶことも私の好みの方法ですが、このサイトのMWEや教科書、構造化されたLaTeXの紹介など、理論上のテンプレートが教義的にはっきりしていることは間違いありません。 )。 初心者のためのこれらの例は、しばしば、それらの "例"を別の文書にコピーして貼り付けるが、それ以上は何も働かないということが、時々不明であることの1つの通常の症状である。
Marijn 09/11/2017
(a)コマンドがどこかで定義されているので、定義や関連するusepackageをコピーする必要があること、(b)テンプレートは、テンプレートとして、また任意のコードのソースとして使用されることを意図していないことを学ぶためのusepackageしかし、(c)適切に行われれば、そのように使用することができる((a)参照)。 テンプレートがなければ、フル装備のドキュメントをまとめるのがより難しくなります。 それは、MWEや入門書が重要で、時には理解に欠かせないことに完全に同意します。

Ulrike Fischer 09/12/2017.

私はテンプレートユーザーです...

私はそれらを絶えず使用しています:手紙を書くとき、私は古いものをテンプレートとして使います。 すべてのプロジェクトで、私の最初のステップは、私が最初のテンプレートとして使用できる古いコードを持っているか知っているかどうかを調べることです。 かなり頻繁に私が使っているテンプレートは良くなく、古いものやバグがあったり、実際には適合しません。 私のテンプレートの多くはかなり複雑です。 彼らは私の時間を節約することは決してありません:私はすべてを再入力する必要はありません、私はコマンド名と構文を見つけるためにドキュメントを歩き回る必要はありません、私はアイデアを再利用することができます。

だから私は人にテンプレートをまったく使わないように伝えることを非常に説得力があるとは思っていません。

...しかし、私はテンプレートを扱う知識があります

これは重要なポイントです。多くのユーザーは、LaTeXを学び、いくつかのドキュメントを読む必要がないように、テンプレートを使用しています。 これは常に動作しません。

したがって、(複雑な)テンプレートやローカルカスタムクラスを使用する場合は、次のようにします。

致命的なエラーが発生し、コンパイルするものがないとか、ヘッダーや参考文献のスタイルを変更するように指示したり、テンプレートの中の何かがニーズに合わないという作業の途中で気づいたとします。 あなたがそのような問題に対処することができるかどうかを検討してください。

答えがこれらのいずれかである場合

  • 私はLaTeXをデバッグしたり、テンプレートを適応させるのに十分な知識があります。
  • 私は私を助ける十分な知識を持つ友人を持っています。
  • 私は私を助けるいくつかの専門的なサポートにアクセスすることができます。
  • 最小限の例を構築してtex.SXや他のヘルプサイトに問い合わせるには、テンプレートとLaTeXについて十分理解しています。

その後、あなたがそれを好きな場合は、テンプレートを使用してください。 外部のサポートに頼っているのであれば、まずテンプレートを推薦するかどうか聞いてみてください。

答えが

  • 問題が発生した場合は、ネット上のすべてのファイルをzipファイルに保存し、無料ですべてを解読するために数時間を過ごした見知らぬ人を見つけようと思います。

次に、テンプレートの使用を再考する必要があります。 あなたがヘルプを見つけたとしても、それほど多くの人がいなくてもfast見つけることはほとんどありません。なぜなら、問題に長い時間を費やしてくれる人がいて、なぜテンプレートを使用するのかについて尋ねたり、あなたは対処できません。

答えが

  • 私は問題を起こさないでしょう - テンプレートは完璧です。

がんばろう。

1 comments
3 Johannes_B 09/12/2017
これはこれまでのところ、おそらく最も有用で正直な答えです。

percusse 09/11/2017.

質問はテンプレートを避けることではありません。 それはあなたが理解していないテンプレートを避けることです。

beamerは、基本的に、ばかばかしく複雑な(そしてしばしば厄介な)コードのテンプレートです。 しかし、それは動作し、一貫しているので、人々はそれを使用し、それを学ぶために余分な時間と努力を費やします。 それは学ぶことができるので(ほとんど)。 memoirも素晴らしく、あなたはナットとボルトにカスタマイズします(KOMAもそうです)。 しかし、キャッチは、これらすべてが素晴らしいマニュアルを持っているということです。 ランダムなテンプレートはありません。 それが悪の原子です。

ランダムなテンプレートを選択してその一部を理解していない場合、それを変更することはできません。 あなたは何をしているのか理解していないので、オンラインで検索を開始してしまいます。

しかし、このすべての混乱は、Googleが検索結果を時系列に並べ替えないためです。 古典的なプレーンTeXと去年のパッケージのテクニックを同じドキュメントで見ることができます。 これはユーザーの責任ではありnot 。 TeXはバージョン情報やその他のインジケータがなくても古くて恐ろしい言語なので、これらのアニメーションが残っているページからトリックを拾います

ここに画像の説明を入力

先月に尋ねられたここから別のコードを選んでください。 どういうわけか彼らはあなたが不思議に動作しません。 また、TeXは超難解で、ユーザもそうです。 だから、あなたは非常に単純な問題にきれいに答えることはできません。 ほとんどの議論は5分以上続くとチューリングの完全性につながります。

すべてが良いコードであるかもしれないし、そうでないかもしれない。 だから、物事は本当に速く複雑になる。 そして、あなたはあきらめてこれを言います、 私は使うことができる簡単に作られたものがありますか? 。 その時点で、あなたは非常に簡単な選択肢を作ることができます:

あなたがコードを扱うか、少なくともあなたがヘッダーを担当する部分とタイトル部分が他の部分であることを大雑把に知っていれば、それを使うことができます。 それ以外の場合は自分自身で行う。 外国のテンプレートをデバッグするのに費やす時間が、あなたが正しく尋ねるときにここで解決したあなたの設計上の問題よりも長くなるからです。

耐えられない...

ここに画像の説明を入力

1 comments
1 TeXnician 09/12/2017
+1もう一度焦点を当てた非常に良い答え。 私はIEに同意しないが...

Related questions

Hot questions

Language

Popular Tags