pdflatex コマンドライン コンパイル出力を非表示にする

pdflatex コマンドライン コンパイル出力を非表示にする

私のプログラムは複数の出力を生成します。.tex ファイルをコンパイルしましたが、そのうちのいくつかはコマンド ラインで生成されます。pdf-latex のコンパイル情報は役に立たないので、コマンド ライン出力を読みやすくするために非表示にしたいと思います。

私は見たこれサイトでは、ボックスを太くすることでそれができるはずだと言及していますが、コマンドラインの同等のものは見つかりませんでした。

答え1

すべてのpdflatex出力をリダイレクトすることもできます。

  • shの場合:pdflatex ... > /dev/null 2>&1
  • cmdの場合:pdflatex ... > NUL 2>&1

または、以下の-quietオプションを使用することもできます:

pdflatex -quiet ...

答え2

私の場合、モードはありません。そのため、提案された引数-quietを使用する必要がありました。-interaction=batchmodeアンドリューコメント

しかし、別の問題が発生しました。何が間違っていたのか、なぜ間違っていたのかが分からないのです。エラーも抑制されますbatchmode

最終的に私が使用した結果は、を使用してエラーのみを出力し、pdflatexのすべての出力を抑制することです。grep

: | pdflatex -halt-on-error src.tex | grep '^!.*' -A200 --color=always 

-halt-on-errorエラーが発生した場合、基本的に対話モードを使用できないため、を使用します(grepプログラムとユーザー間のダイアログが無効になります)。また、 が入力を要求しないようにするにはpdflatex、出力のないコマンド (:コマンド) をパイプします。

議論についても説明しましょうgrep:

  • ^!.*
    • pdflatex の出力で検索する文字列
    • で始まるすべての行に一致し!、エラー行と見なされます。
  • -A200
    • マッチするたびに200行を出力する
    • こうすることで私は確実に一致したエラー行の後に続く関連情報も印刷します。
  • --color=always
    • これにより、色付きの出力が提供され、何が問題で、なぜ問題があったのかが明確にわかります。問題は太字の赤です

ラッパースクリプト

この目的のために、より便利なソリューションを提供するラッパースクリプトを作成しました。使い方はpdflatex/pdftex自体とほぼ同じです。CTANパッケージまたはGitLabリポジトリ

クイックインストール

このワンライナーを使用して最新バージョンをインストールする方法は次のとおりです。

curl -s https://gitlab.com/jirislav/pdftex-quiet/raw/latest/pdftex-quiet | \
    sudo tee /usr/local/bin/pdftex-quiet >/dev/null \
    && sudo chmod +x /usr/local/bin/pdftex-quiet \
    && sudo ln -sf /usr/local/bin/pdftex-quiet /usr/local/bin/pdflatex-quiet

ラッパー スクリプトを実行する方法の例を次に示します。

pdftex-quiet compile-me.tex
# You may also provide additional attributes to `pdflatex`
pdflatex-quiet -output-format=dvi -output-directory=/tmp compile-me.tex

pdflatex-quiet/スクリプトのバージョンやヘルプを表示することもできますpdftex-quiet:

pdflatex-quiet -v  # or --version
pdflatex-quiet -h  # or --help

pdflatex-quietまた、との違いはpdftex-quietここで説明されているようにDenis Bitouzé のコメントのおかげで尊重されます。

答え3

ちなみに、https://ctan.org/pkg/texfotこれは、この問題を解決するための私の試みでした -- テキサス エンジンからの冗長な出力を排除しながら、興味深いメッセージ (実際に対処したいメッセージ) を表示しました。 --karl

答え4

2023-02-05更新

私は切り替えました地殻変動以下の解決策は使用しなくなりました。

tex-to-pdf コンパイラ bash 関数

私は最終的に、 ルベンアンドリューそして ジリスラフ そしてそれを私の関数として配置します.bashrc

短縮版

すべての出力は.txtファイルにリダイレクトされます。このファイルのエラー メッセージが表示され、.txtファイルは削除されます。

次の関数を に組み込むことができます.bashrc:

function tex-pdf {
        pdflatex -halt-on-error -interaction=nonstopmode $1 > $1.txt
        grep '^!.*' --color=always $1.txt
        rm $1.txt
}
export -f tex-pdf

次のように使えます

$ tex-pdf report

ロングバージョン

BibTeX を使用する場合、またはコンパイル中に作成されるが不要なファイルを削除する場合は、次の方法で関数を拡張できます。

function tex-pdf {
    printf "Step 1/4 - pdflatex\n"
    pdflatex -halt-on-error -interaction=nonstopmode $1.tex > $1.txt
    grep '^!.*' --color=never $1.txt

    printf "Step 2/4 - bibtex\n"
    bibtex $1.aux > $1.txt
    grep '^!.*' --color=never $1.txt

    printf "Step 3/4 - pdflatex\n"
    pdflatex -halt-on-error -interaction=nonstopmode $1.tex > $1.txt
    grep '^!.*' --color=never $1.txt

    printf "Step 4/4 - pdflatex\n"
    pdflatex -halt-on-error -interaction=nonstopmode $1.tex > $1.txt
    grep '^!.*' --color=never $1.txt

    rm -f $1.txt $1.aux $1.bbl $1.blg $1.log $1.out $1.toc
}
export -f tex-pdf

コードにエラーがない場合、出力は次のようになります。

$ tex-pdf report
Step 1/4 - pdflatex
Step 2/4 - bibtex
Step 3/4 - pdflatex
Step 4/4 - pdflatex

関連情報