pdflatex-Befehlszeile verbirgt die Kompilierungsausgabe

pdflatex-Befehlszeile verbirgt die Kompilierungsausgabe

Mein Programm erzeugt mehrere Ausgaben: Ich habe eine .tex-Datei kompiliert und einige davon werden in der Befehlszeile erzeugt. Die Kompilierungsinformationen von pdf-latex sind für mich nutzlos und ich möchte sie verbergen, um meine Befehlszeilenausgabe lesbar zu machen.

Ich habe gesehenDasAuf der Site wird erwähnt, dass eine Box-Thicken-Verstärkung funktionieren sollte, ich habe jedoch kein Äquivalent dazu auf der Befehlszeile gefunden.

Antwort1

Sie können entweder die gesamte pdflatexAusgabe umleiten:

  • für sh:pdflatex ... > /dev/null 2>&1
  • für cmd:pdflatex ... > NUL 2>&1

Oder Sie nutzen die -quietOption:

pdflatex -quiet ...

Antwort2

In meinem Fall gibt es keinen -quietModus. Also musste ich -interaction=batchmodedas Argument verwenden, wie vorgeschlagen vonAndreas'SKommentar.

Aber dann trat ein weiteres Problem auf - Sie werden nicht sehen, was schief gelaufen ist und warum, dennFehler werden auch unterdrückt mitbatchmode.

Das Ergebnis, das ich letztendlich verwende, besteht darin, die gesamte pdflatexAusgabe zu unterdrücken, indem ich grepnur die Fehler ausgibt:

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

Ich verwende es -halt-on-error, weil Sie den interaktiven Modus im Fehlerfall grundsätzlich nicht verwenden können ( grepdeaktiviert den Dialog zwischen Programm und Benutzer). Um außerdem sicherzustellen, dass pdflatexnie zur Eingabe aufgefordert wird, leiten wir den Befehl ohne Ausgabe weiter ( :Befehl).

Lassen Sie mich auch die grepArgumente erläutern:

  • ^!.*
    • Zeichenfolge, nach der in der Ausgabe von pdflatex gesucht werden soll
    • Es stimmt mit allen Zeilen überein, die mit beginnen !und als Fehlerzeilen gelten.
  • -A200
    • nach jedem Treffer 200 Zeilen ausgeben
    • Auf diese Weise stelle ich sicher,Drucken Sie auch die relevanten Informationen, die nach den übereinstimmenden Fehlerzeilen folgen
  • --color=always
    • Dadurch erhalten wir eine farbige Ausgabe, sodass wir deutlich sehen können, was schief gelaufen ist und warum -das Problem ist fett rot

Wrapper-Skript

Ich habe ein Wrapper-Skript erstellt, um genau für diesen Zweck eine bequemere Lösung bereitzustellen. Seine Verwendung ist fast dieselbe wie pdflatex/ pdftexselbst. Sie können es hier ausprobieren:ein CTAN-Paketoder alsein GitLab-Repository.

Schnellinstallation

Und so installieren Sie die neueste Version mit diesem 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

Hier ist ein Beispiel, wie Sie das Wrapper-Skript ausführen:

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

Sie können auch die Version oder Hilfe des pdflatex-quiet/ pdftex-quiet-Skripts anzeigen:

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

Auch der Unterschied zwischen pdflatex-quietund pdftex-quiet,wie hier erklärtwird respektiert – danke für den Kommentar von Denis Bitouzé.

Antwort3

Meine persönliche Meinung,https://ctan.org/pkg/texfotwar mein Versuch, dieses Problem zu lösen – die ausführliche Ausgabe von Tex-Engines zu eliminieren und trotzdem die interessanten Nachrichten anzuzeigen (die, gegen die ich tatsächlich etwas tun möchte). – Karl

Antwort4

Update 2023-02-05

Ich bin gewechselt zutektonischund verwenden Sie die folgende Lösung nicht mehr.

Tex-to-PDF-Compiler-Bash-Funktion

Ich habe die Antworten von Abonnieren, AndreasUnd Abonnieren und es als Funktion in mein einfügen .bashrc.

Kurzfassung

Die gesamte Ausgabe wird in eine .txtDatei umgeleitet. Die Fehlermeldungen dieser Datei werden angezeigt und die .txtDatei entfernt.

Sie können die folgende Funktion in Ihr einfügen .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

Sie können es verwenden wie

$ tex-pdf report

Lange Version

Wenn Sie BibTeX verwenden oder Dateien entfernen möchten, die beim Kompilieren entstehen, Sie aber nicht benötigen, können Sie die Funktion folgendermaßen erweitern:

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

Wenn Ihr Code keine Fehler enthält, lautet die Ausgabe:

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

verwandte Informationen