Notepad++ と MiKTeX -- CMD がコマンド/exe を認識しない

Notepad++ と MiKTeX -- CMD がコマンド/exe を認識しない

現在、バッチ ファイル/実行コマンドの組み合わせを使用して .tex ファイルを PDF にコンパイルできません。複数の行でエラーが発生するため、コード内でその前に '*' を付けてマークします。これに対する唯一の解決策は、パス ファイルを変更して MiKTeX ディレクトリを追加することでした。これを実行しましたが、問題は解決しません。他の修正方法を見つけることができませんでした。

まず、実行コマンド:

"C:\Users\Matthew\Desktop\latex.bat" "$(CURRENT_DIRECTORY)" "$(NAME_PART)"

そして、.bat自体

%~d1
cd %1

*call:cleanup

*pdflatex %2
*bibtex  %2
*pdflatex %2
*pdflatex %2

*call:cleanup

START "" "C:\Program Files\SumatraPDF\SumatraPDF.exe" %2 -reuse-instance

del *.dvi
del *.aux
del *.bbl
del *.blg
del *.brf
del *.out
goto:eof

すべてのコードはこのウェブページ

私が知る限り、機能している部分は、実行コマンド自体、PDF プログラムの起動 (MiKTeX が動作していないため、存在しないファイルを開こうとしている)、および最後のログ ファイルの削除だけです。PDFLatex 自体はコマンド プロンプトから呼び出すことができますが、何らかの理由でバッチ ファイルに入れても機能しません。

答え1

質問はリンクされたソースファイルの短縮版です正しく動作しません:cleanup 行がないため、最後にデフォルトの del が実行されるまで call:cleanup は失敗します。

「指定されたバッチ ラベルが見つかりません - クリーンアップ」

バッチファイルは説明どおりに実行されているように見えますが、.pdfがないとコマンドが間違っているため、SumatraPDFも当然失敗します。

奇妙なのは、説明によると、これらの修正が行われたとしても PDFLATEX などが実行されるはずであるが、出力エラーに関する手がかりがなければ、なぜ実行されないのか誰も分からないということです。

エラーをキャッチするには、SumatraPDF を開始した行の後に別の行で一時停止を入れます。

リンクされたソースが削除された場合に備えて、上記のコメントに従って修正されたバージョンをここに示します。著者の前提条件に注意してください。tex bin (MiKTeX または TeX Live がパス上にある必要があります)
このバッチファイルは、2 つの別々の引用符付き引数で呼び出されます
。A) tex ファイルへの引用符付きフルパス (例: "d:\my docs")
B) 拡張子なしの引用符付きファイル名 (例: "my tex file")
コマンド プロンプトまたはエディターから実行できます。

SumatraPDF 内の PDF から呼び出すように変更することもできます。PDF ビューアから実行すると、標準的な MSnotePad または Wordpad/write で行われた単純な変更を再コンパイルできます (IDE エディタは不要です :-)

%~d1
cd %1
:: the following line will delete all files listed below prior to a new run and again as it opens the pdf so do NOT list the synctex files
call:cleanup
:: the following calls do not include common requirements such as -synctex=1 etc. (compare with your normal workflow)
pdflatex %2
bibtex  %2
pdflatex %2
pdflatex %2

"C:\Program Files\SumatraPDF\SumatraPDF.exe" %2.pdf  

:cleanup
del *.dvi
del *.aux
del *.bbl
del *.blg
del *.brf
del *.out
:: the following eof is needed once to return to the initial call above then will be ignored on final run
goto:eof

関連情報