ラテックスに最適なビルドシステムを見つけようとしています。
現在、私は latex-makefile を使用し、vimで編集し、Okularまたはgvで変更を表示しています。主な問題は、時々それが私に隠れたエラーを取得することです、そして私は手動でラテックスを実行しなければなりません。主な利点は、それが私が必要とするすべての反復を行い、pdfとpsの両方を単純に提供することです。
経験がある場合
あなたはそれらをお勧めしますか、そしてなぜ/なぜしませんか?
しばらくの間これらすべてのオプションを検討した後、私は次の解決策で解決しました。
スクリプトは 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
私はただlatexmkを試しました。もし、するなら
latexmk -pvc file.tex
次に、自動プレビューします(デフォルトではDVI)。
man latexmk
を参照欠点:
私はそれを自分で使ったことはありませんが、 Rubber が良い代替品だと聞いています。
彼らのウェブサイトから:
Rubberは、LaTeXドキュメントのコンパイルに関連するすべてのタスクを処理することを目的としたプログラムです。これには、もちろん、ドキュメント自体をコンパイルして、すべての参照を定義するのに十分な回数、BibTeXを実行して書誌参照を管理することが含まれます。 PostScriptドキュメントを生成するためのdvipsの自動実行、およびPDFドキュメントを生成するためのpdfLaTeXの使用も含まれます。
わかりましたので、この質問は少し古いですが、「ラテックスビルドシステム」をググったときに出てきたので、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/ を参照してください。
私はEclipseとTexEcpliseアドオンを使用してTeXファイルを編集します。 LaTeXの構文の強調表示があります。変更されておらず、コンパイル済みのtexファイルのプレビューを要求すると、ファイルがビューアで開きます。 texファイルが変更されると、texファイルを表示する前にコンパイルします。必要な反復を行いますが、必要な場合のみです。
別の利点は、すべてのエラーと警告がボックスにまとめられ、それらがtexファイルで強調表示されることです。これは TexEclipse ホームページの スクリーンショット です。
tex.stackexchange に Scons を使用して詳細な回答を投稿しました。
基本的に、これを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
ファイルに含まれているファイルと参考文献ファイルの変更を検出します!
しばらくラバーを試しています。ここで結果を要約します。
最終回答 に投稿したスクリプトを使用したかった。
残念ながら、私の設定では動作しませんでした(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
にパッチを適用する必要がありました。
残念ながら、latexmk
はalwaysを生成するように見えるため、ステートメントを完了する前にドキュメントを保存すると、これでも出力が破壊されますPDFファイルPDFファイル、エラーが発生した場合でも–その戻りコードは常に0で、これは問題です。
(これを明確にするために、ドキュメントにemph{
と入力しただけで保存するとします。バックグラウンドスクリプトはすぐにドキュメントをコンパイルして失敗します。ただし、(ほとんど空の)出力ファイルが生成されます)。
さらに、前方検索は適切に機能しなくなります。基本的に、ドキュメント内の間違ったポイントにジャンプします。これは、コンパイル前のドキュメントのコピーと関係があるのではないかと思います。
したがって、MacVimでのタイピングの継続的な保存をまだ有効にしていなかったとしても、これはまだ完全に満足できるソリューションではありません。
AUCTEX&preview-latex with Emacs別のオプション。
結果のdviまたはpdfファイルをemacsで開くこともできます。そのバッファーに対してauto-revert-modeをオンにすると、ドキュメントを再コンパイルするたびに変更がレンダリングされます。
(これは進行中の作業です)
現在、vim-latexsuiteを試しています。それは基本的にvimをIDE for latexに変換します。
「ベター」は非常に相対的な用語です...他に何をしたいですか?このメイクファイルはかなり処理しているようで、ウィンドウの代わりに* nixを職場で実行していたと思います...メイクファイルで処理する必要があるものが他にある場合は、それらを追加してみませんか?
それを「より良く」するためには、あなたが正確に何をしているのかについてより多くの詳細を提供する必要があります。
たとえば、.logファイルをgrepで解析し、エラーや警告を検索して別のファイルにダンプし、新しいファイルを開いてエラーを読み取ることができます。
それはあなたが何をしたいかによります...
ltx は、latexドキュメントのコンパイルを高速化するためのlatexのラッパーであると主張しています。私はそれを動作させることができませんでした(initexのいくつかの問題)。
latex-makefile をしばらく使用しています。編集、コンパイル、プレビューのサイクルを使用しようとしている場合は、非常に便利です。
私はlatexmkの利点をかなり簡単に複製できます:
while [ 1 ]; do /usr/bin/make; done
いくつかの欠点:
TeXMaker をご覧ください。 :-)
機能(wikiから):
- インラインスペルチェック。
- LaTeXソースファイルを書き込むためのUnicodeエディター(構文の強調表示、元に戻す、やり直し、検索、置換、スペルチェッカー...)
- LaTeXタグと数学記号はマウスで入力できます
- ドキュメントとセクションのテンプレート
- LaTeX関連のプログラムを起動できます
- BibTeXデータベース管理
- アウトラインまたは「構造ビュー」
- LaTeXコンパイル中のログファイル、およびコンパイラーによって検出されたソースエラーを「ステップスルー」する機能
- 統合されたLaTeXからHTMLへの変換ツール
機能(私から):
- 表の挿入、引用、参照に役立つウィザード
- 双方向サポート
- 便利なキーボードショートカット
- オートコンプリートワード(特に参照に役立ちます)
- 独自の指示を定義する
MikTeXを TeXnicCenter と組み合わせて使用しています。私の目的には問題なく動作します。システムがエラーや警告を隠したことは一度もありません。カスタムビルドスクリプトは作成と設定が簡単です。