13

私はWindows用のMiKTeX2.8ディストリビューションを使用しています。

私たちは主にソフトウェアを開発し、LaTeXを使用してユーザーの指示を作成します。LaTeXを使用する理由は次のとおりです。

  • 変更などを追跡するためのソース管理下で優れています。
  • Word文書とは異なり、ソースファイルが突然破損することを決定することはありません。
  • 複数のドキュメントで1つのセクションを共有できるため、ドキュメントにDRYの原則を適用して、一部のドキュメントが他のドキュメントと同期しなくなるのを防ぐことができます。Wordでマスタードキュメントを作成することはできますが、それらは地獄のように不安定であることがわかりました。

ビルドサーバーでの無人ビルドプロセスの一環として、MiKTeXのtexify実行可能ファイルを使用してドキュメントをビルドします。これはかなりうまく機能します。

ただし、開発者がエラーを起こした場合に問題が発生します(たとえば、存在しない\labelへの\ref)。このようなエラーは、LaTeXでのみ警告を生成します。警告はtexifyによって認識されなくなり、ドキュメントにエラーが残ります。

現在、「LaTeX警告」で始まる行のログファイルをスキャンし、存在する場合はビルドに失敗するビルドステップがあります。これは機能しますが、明らかにかなり不安定であり、警告がすり抜ける可能性があります。現在、開発マシンのローカルビルドでは使用されていませんが、それが唯一の方法である場合は、現在使用しているエディター(MiKTeXに付属のTeXworks)と統合する必要があります。

未定義の参照などの警告が発生した場合はビルドを失敗させたいのですが、ログファイルの不安定なスキャンは実行したくありません。この機能を提供するものはありますか?

この機能を開発マシンのローカルビルドとビルドサーバーで使用できるとしたら、それは大きなボーナスになります。

4

2 に答える 2

5

次の(テストされていない)コードは、警告をエラーに変えるはずです。

\renewcommand{\GenericWarning}[2]{\GenericError{#1}{#2}{}{This warning has been turned into a fatal error.}}

次に、警告をフィルタリングするための無音パッケージに興味があるかもしれません。

ただし、LaTeXの最後の実行に対してのみこれを行うように調整する必要もあります。これは、最初の実行中に未定義の参照などの警告が予想されるためです。

LaTeXを適切にサポートしている編集者は、LaTeXを再実行する必要があるかどうかを教えてくれます(TeXworksはそれを実行しませんか?)。彼らは、コンソール出力またはログファイルを解析することによってそれを行います。実際、これはかなり堅牢です(そして、本当に心配している場合は\GenericWarning、すべての警告に特徴的な文字列を追加するように再定義できます)。ログを解析することが正しい方法だと思います。

これは、ドキュメントに対して実行するテストと考えてください。未定義の参照がある場合、ドキュメントのビルドは成功します。ビルド製品は、pdf(またはその他)とTeXログです。ログの警告をチェックすることはテストです。

于 2010-07-18T22:13:28.213 に答える
1

ラテックスのジョブ管理を介してこれを行うのが最善ですが、それを行う方法がわかりません。

役に立つかもしれないいくつかのテストされていないダクトテープはここにあります:

\ def \ exitfromtex {\ nonstopmode \ read16to \ dummy}
\ let \ writerrmessage \ errmessage
\ def \ errmessage#1 {\ writerrmessage {#1} \ exitfromtex}

ドキュメンタリーに含める必要のあるパッケージファイルに入れるか、ローカルのLaTeX.fmtファイルにベイクすることができます。

于 2010-07-14T10:09:02.310 に答える