我的程式產生多個輸出:我編譯了一個 .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