web-dev-qa-db-ja.com

ラテックスの推奨ビルドシステム?

ラテックスに最適なビルドシステムを見つけようとしています。

現在、私は latex-makefile を使用し、vimで編集し、Okularまたはgvで変更を表示しています。主な問題は、時々それが私に隠れたエラーを取得することです、そして私は手動でラテックスを実行しなければなりません。主な利点は、それが私が必要とするすべての反復を行い、pdfとpsの両方を単純に提供することです。

経験がある場合

  • ラテックスmk
  • vim-latex
  • カイル
  • lyx
  • miktex
  • ラテックスメイクファイル
  • 究極のラテックスメイクファイル
  • ゴム
  • 私が出会ったことのない他の人

あなたはそれらをお勧めしますか、そしてなぜ/なぜしませんか?

52
Paul Biggar

しばらくの間これらすべてのオプションを検討した後、私は次の解決策で解決しました。

  • vimを入力中に継続的に書き込むように設定
  • バックグラウンドでスクリプトを実行して継続的にビルドし、PDFを更新します。 latexmkは、okular(私のビューア)で不適切なときにリロードされることを除いて、ほぼ十分です。

スクリプトは https://github.com/pbiggar/texbuild で入手できます。

Rubber-infoを使用して、ログファイルからエラーと警告を取得します。上記のスクリプトは、ログファイルをt.logに保存します。 vimの場合:

autocmd FileType tex set makeprg=rubber-info\ t.log
autocmd FileType tex set errorformat=%f:%l:\ %m
10
Paul Biggar

私はただlatexmkを試しました。もし、するなら

latexmk -pvc file.tex 

次に、自動プレビューします(デフォルトではDVI)。

  • 依存関係を処理します
  • DVI、psまたはpdf
  • うまく反復します。
  • 非常に構成可能、man latexmkを参照

欠点:

  • エラーを圧縮しないため、あまり役に立ちません(回避策:rubber-infoを個別に使用してください)
  • Manファイルのバグ:「ビューアー(gv)が、更新された.psファイルまたは.pdfファイルの作成開始後、ファイルが完了する前にそれを読み込もうとする場合があります。これを回避するには、一時的な.pdfファイルを使用してビルドした方がよいでしょう。
  • あまりユーザーフレンドリーではありません。
21
Paul Biggar

私はそれを自分で使ったことはありませんが、 Rubber が良い代替品だと聞いています。

彼らのウェブサイトから:

Rubberは、LaTeXドキュメントのコンパイルに関連するすべてのタスクを処理することを目的としたプログラムです。これには、もちろん、ドキュメント自体をコンパイルして、すべての参照を定義するのに十分な回数、BibTeXを実行して書誌参照を管理することが含まれます。 PostScriptドキュメントを生成するためのdvipsの自動実行、およびPDFドキュメントを生成するためのpdfLaTeXの使用も含まれます。

10
hsribei

わかりましたので、この質問は少し古いですが、「ラテックスビルドシステム」をググったときに出てきたので、2セント追加すると思いました。 Makefileベースのソリューションを試しましたが、出力が少し冗長で扱いにくいことがわかりました。誰かがlatex用のscons拡張を構築しているのではないかと思ったが、sconsがすでにネイティブでlatexをサポートしていることを知ってうれしい驚きだった!必要なのは、次のようなSConsctructファイルを作成することだけです。

env = Environment()  
env.PDF(target="report.pdf", source="report.tex")

ビルドするにはscons report.pdf。 Sconsは、report.texに含まれる.texファイルを自動的にビルドし、参考文献を処理し、すべての参照を解決するために繰り返しビルドを実行します-簡単です!

同じ方法でDVIおよびPSファイルを作成できます。これらのビルダーの詳細については、 http://www.scons.org/doc/2.0.1/HTML/scons-user/a8524.html を確認してください。

Scons(代替品)の詳細については、 http://www.scons.org/ を参照してください。

9
adam

私はEclipseとTexEcpliseアドオンを使用してTeXファイルを編集します。 LaTeXの構文の強調表示があります。変更されておらず、コンパイル済みのtexファイルのプレビューを要求すると、ファイルがビューアで開きます。 texファイルが変更されると、texファイルを表示する前にコンパイルします。必要な反復を行いますが、必要な場合のみです。

別の利点は、すべてのエラーと警告がボックスにまとめられ、それらがtexファイルで強調表示されることです。これは TexEclipse ホームページの スクリーンショット です。

5
Thierry

tex.stackexchangeScons を使用して詳細な回答を投稿しました。

基本的に、これをSConstructというファイルに入れます。

# make sure scons finds tex executables:
import os
env = Environment(ENV=os.environ)
# target and source:
pdf_output = env.PDF(target='main.pdf', source='main.tex')
# make sure that the pdf is reloaded properly (e.g., in Skim)
env.Precious(pdf_output)

実行するだけでPDFを構築できます

scons

驚くほど、sconsはmain.texファイルに含まれているファイルと参考文献ファイルの変更を検出します!

5
Olivier Verdier

しばらくラバーを試しています。ここで結果を要約します。

  • Rubberは.epsファイルをpfdlatex用の.pdfsに自動的に変換します。ただし、これはincludegraphicsマクロに対してのみ行われるようです。あなたがあなた自身のマクロを持っているなら、それはありません。
  • rubber-info は素晴らしいです。これは魔法です。エラーメッセージと行を取得するときに、他のどのプログラムよりも優れています。そして、実際にそれを使用するためにビルドするためにゴムを使用する必要はありません。
  • 反復を停止するタイミングがわからないようで、多くの場合、早く停止します。
  • それはあなたのPDFを上書きするので上書きします。これは苛立たしいものです(これは一時ファイルにビルドするlatex-makefileの素敵な機能が欠けています)。
4
Paul Biggar

最終回答 に投稿したスクリプトを使用したかった。

残念ながら、私の設定では動作しませんでした(vim-latexsuiteを搭載したMacVim、ビューアとしてのSkim、およびXeTeX)。また、前方検索も使用します(つまり、 \ls Vimでは、PDF開いているビューアのドキュメント)の対応するポイントにジャンプします。

さらに、私のドキュメントはthesis.texと呼ばれていません(大きな驚きです。これは論文ではありません)。そのため、共有したい構成作業をいくつか実行しました。注意、私のbashスキルは恐ろしいものです。

#!/bin/bash

set -x
ulimit -t 10 # sometimes pdflatex gets stuck

if [ "$1" = "" ]; then
    echo "No target name specified"
    exit 1
fi

TARGET=$1
SOURCE=$1.tex
TMPSOURCE=_$TARGET.tex
TMPTARGET=_$TARGET

while [ 1 ]; do
    # Compile a different file ($TMPSOURCE.pdf) so that it doesn't reload mid-compile
    cp $SOURCE $TMPSOURCE
    # better than running pdflatex manually, as this wont rebuild if there's nothing there.
    latexmk -pdf -silent $TMPTARGET > /dev/null

    # For rubber-info
    cp $TMPTARGET.log $TARGET.log

    if [ -e $TMPTARGET.pdf ]; then # Check the compile succeeded first
        # No output file yet.
        [ ! -e $TARGET.pdf ]
        HASNOPDF=$?
        # ignore if it's unchanged.
        # OS X diff doesn't consider binary files. Single-line output, return value 2
        diff $TARGET.pdf $TMPTARGET.pdf
        OUTPUTDIFFERS=$?
        if [ $HASNOPDF -eq 0 -o $OUTPUTDIFFERS -ne 0 ]; then
            # Do NOT RM since Skim cannot deal with this.
            cp $TMPTARGET.pdf $TARGET.pdf
        fi
    fi

    sleep 1 # give it time to be killed by a CTRL-C
done

これにより、一時ファイルがコンパイルされ、(スクリプトのように逆に実行されるのではなく)指定された名前にコピーされます。スクリプトの使用法:

./scriptname project

ここで、projectはTeXファイルの名前で、ファイル拡張子は付けません。

rubber-info行も変更しました:

autocmd FileType tex exe "set makeprg=rubber-info\\ _" . expand("%:t:r") . ".log"

また、実行可能ファイルの名前がハードコードされているため、XeTeXを使用するようにlatexmkにパッチを適用する必要がありました。

残念ながら、latexmkalwaysを生成するように見えるため、ステートメントを完了する前にドキュメントを保存すると、これでも出力が破壊されますPDFファイルPDFファイル、エラーが発生した場合でも–その戻りコードは常に0で、これは問題です。

(これを明確にするために、ドキュメントにemph{と入力しただけで保存するとします。バックグラウンドスクリプトはすぐにドキュメントをコンパイルして失敗します。ただし、(ほとんど空の)出力ファイルが生成されます)。

さらに、前方検索は適切に機能しなくなります。基本的に、ドキュメント内の間違ったポイントにジャンプします。これは、コンパイル前のドキュメントのコピーと関係があるのではないかと思います。

したがって、MacVimでのタイピングの継続的な保存をまだ有効にしていなかったとしても、これはまだ完全に満足できるソリューションではありません。

2
Konrad Rudolph

AUCTEX&preview-latex with Emacs別のオプション。

結果のdviまたはpdfファイルをemacsで開くこともできます。そのバッファーに対してauto-revert-modeをオンにすると、ドキュメントを再コンパイルするたびに変更がレンダリングされます。

1
mhb

(これは進行中の作業です)

現在、vim-latexsuiteを試しています。それは基本的にvimをIDE for latexに変換します。

学習曲線:

  • 非常に直感的ではありませんが、チュートリアルの後は問題ないようです。
  • それは私が好きないくつかのキーを再定義し、私はそれらを修正することができないようです。

オートコンプリート:

  • いくつかの組み込みマクロの使用を簡単にします
  • ユーザーマクロに<< + >>を追加するのは非常に面倒です。
  • 何らかの理由で "を` `などに置き換えるのは、必要になるまではいいことです。
  • オートコンプリートも煩わしい場合があります。ラテックスで作業するために自分でプログラムし直す必要があります。

ビルドシステム:

  • ひどい
  • クイックフィックスが機能しない-それはしばしば私を間違ったファイルに入れます
  • ラテックスが結果を2行に分割してエラーを報告する場合、それはそれを検出しません。
1
Paul Biggar

「ベター」は非常に相対的な用語です...他に何をしたいですか?このメイクファイルはかなり処理しているようで、ウィンドウの代わりに* nixを職場で実行していたと思います...メイクファイルで処理する必要があるものが他にある場合は、それらを追加してみませんか?

それを「より良く」するためには、あなたが正確に何をしているのかについてより多くの詳細を提供する必要があります。

たとえば、.logファイルをgrepで解析し、エラーや警告を検索して別のファイルにダンプし、新しいファイルを開いてエラーを読み取ることができます。

それはあなたが何をしたいかによります...

0
Mica

ltx は、latexドキュメントのコンパイルを高速化するためのlatexのラッパーであると主張しています。私はそれを動作させることができませんでした(initexのいくつかの問題)。

0
Paul Biggar

latex-makefile をしばらく使用しています。編集、コンパイル、プレビューのサイクルを使用しようとしている場合は、非常に便利です。

  • 設定はほとんど必要ありません。
  • .psまたは.pdfをビルドします。
  • 必要な反復をすべて処理します。文字通り、他に何も書く必要はありません。
  • かなり堅牢ですが、エラーや警告が壊れることがあります。
  • 新しいPDFがビルドされるまで、古いPDFは削除されません。
  • それはgnuplotからepsを生成するような他のファイルを構築します。私はこれが非常に役立つとは思っていません。
  • 著者は機能のリクエストに非常に迅速に対応します。
  • 私はlatexmkの利点をかなり簡単に複製できます:

    while [ 1 ]; do /usr/bin/make; done
    

いくつかの欠点:

  • 直接pdftexを介してではなく、dvi-> ps-> pdfを介してのみpdfを生成できます。
  • エラー出力は標準のラテックス出力と同じではないため、vimは正しい行に移動しません。
  • Bibtexおよびその他の非texソースの変更で常に再コンパイルされるわけではありません。
  • ファイルを削除しても、make cleanを行わないと依存関係は削除されません。
0
Paul Biggar

TeXMaker をご覧ください。 :-)

機能(wikiから):

  • インラインスペルチェック。
  • LaTeXソースファイルを書き込むためのUnicodeエディター(構文の強調表示、元に戻す、やり直し、検索、置換、スペルチェッカー...)
  • LaTeXタグと数学記号はマウスで入力できます
  • ドキュメントとセクションのテンプレート
  • LaTeX関連のプログラムを起動できます
  • BibTeXデータベース管理
  • アウトラインまたは「構造ビュー」
  • LaTeXコンパイル中のログファイル、およびコンパイラーによって検出されたソースエラーを「ステップスルー」する機能
  • 統合されたLaTeXからHTMLへの変換ツール

機能(私から):

  • 表の挿入、引用、参照に役立つウィザード
  • 双方向サポート
  • 便利なキーボードショートカット
  • オートコンプリートワード(特に参照に役立ちます)
  • 独自の指示を定義する
0
sorush-r

MikTeXを TeXnicCenter と組み合わせて使用​​しています。私の目的には問題なく動作します。システムがエラーや警告を隠したことは一度もありません。カスタムビルドスクリプトは作成と設定が簡単です。

0
Martijn