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-quietpdftex-quiet之间的区别正如这里解释的那样受到尊重——感谢 Denis Bitouzé 的评论。

答案3

FWIW,https://ctan.org/pkg/texfot是我尝试解决这个问题 —— 消除来自 tex 引擎的详细输出,同时仍然显示有趣的消息(我真正想要做些什么的消息)。——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

相关内容