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 pdflatex
Ausgabe umleiten:
- für sh:
pdflatex ... > /dev/null 2>&1
- für cmd:
pdflatex ... > NUL 2>&1
Oder Sie nutzen die -quiet
Option:
pdflatex -quiet ...
Antwort2
In meinem Fall gibt es keinen -quiet
Modus. Also musste ich -interaction=batchmode
das 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 pdflatex
Ausgabe zu unterdrücken, indem ich grep
nur 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 ( grep
deaktiviert den Dialog zwischen Programm und Benutzer). Um außerdem sicherzustellen, dass pdflatex
nie zur Eingabe aufgefordert wird, leiten wir den Befehl ohne Ausgabe weiter ( :
Befehl).
Lassen Sie mich auch die grep
Argumente 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
/ pdftex
selbst. 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-quiet
und 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 .txt
Datei umgeleitet. Die Fehlermeldungen dieser Datei werden angezeigt und die .txt
Datei 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