pdflatex命令列隱藏編譯輸出

pdflatex命令列隱藏編譯輸出

我的程式產生多個輸出:我編譯了一個 .tex 文件,其中一些是在命令列中產生的。 pdf-latex 的編譯資訊對我來說沒有用,我想隱藏它以使我的命令列輸出可讀。

我見過網站提到一些 box-thicking 應該可以做到這一點,但我還沒有找到等效的命令列。

答案1

您可以重定向所有pdflatex輸出:

  • 對於 sh:pdflatex ... > /dev/null 2>&1
  • 對於命令: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 儲存庫

快速安裝

以下是如何使用此 oneliner 安裝最新版本:

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

FWIW,https://ctan.org/pkg/texfot是我解決這個問題的嘗試——消除 tex 引擎的詳細輸出,同時仍然顯示有趣的消息(我真正想做的事情)。 ——卡爾

答案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

相關內容