Fehler beim Verwenden des Minted-Pakets zum Schreiben eines LaTeX-Codeausschnitts in ein Dokument

Fehler beim Verwenden des Minted-Pakets zum Schreiben eines LaTeX-Codeausschnitts in ein Dokument

Ich möchte einen LaTeX-Codeausschnitt in ein Dokument schreiben und habe daher das Minted-Paket geladen. Beim Kompilieren ist jedoch der folgende Fehler aufgetreten:

! Fehler beim Paket „minted“: Sie müssen LaTeX mit dem Flag „-shell-escape“ aufrufen. Eine Erklärung finden Sie in der Dokumentation zum Paket „minted“.

Helfen Sie mir bitte bei diesem Problem!

Dank im Voraus!

Antwort1

Da das Minted-Paket Zugriff auf die Shell erfordert, sollte dieser in Ihrem Editor zugelassen werden. Dazu müssen Sie -shell-escapedie Befehlsliste für LaTex, PdfLaTex, XeLaTex und LuaLaTex in Ihrem Editor ergänzen. Ändern Sie diese Befehle in „TexWorks“, indem Sie zu „Optionen > TexWorks konfigurieren > Befehle“ gehen und die folgenden Befehle ändern, indem Sie hinzufügen -shell-escape:

latex.exe -shell-escape -src -interaction=nonstopmode %.tex
pdflatex.exe -shell-escape -synctex=1 -interaction=nonstopmode %.tex
xelatex.exe -shell-escape -synctex=1 -interaction=nonstopmode %.tex
lualatex.exe -shell-escape -synctex=1 -interaction=nonstopmode %.tex

TeXworks mit aktiviertem PDFLatex und Shellescape

Bildbeschreibung hier eingeben

Die Konsole wird angezeigt \write18 enabled, sobald das obige für eine Datei ausgeführt wird

ODER

Sie können den Code auch in einer Tex-Datei speichern (nehmen wir an, Sie haben sie genannt testMinted.tex) und ihn von der Befehlszeile aus kompilieren, indem Sie in den Ordner gehen, in dem sich die Datei befindet (nehmen wir an, sie befindet sich in C:\Users\uqapourm\Desktop\testMinted), und ihn pdflatex.exe -shell-escape -synctex=1 -interaction=nonstopmode testMinted.texin der Befehlszeile ausführen.

SICHERHEIT

Manchmal ist es nützlich, externe Befehle aus der Tex-Datei heraus ausführen zu können: So können Sie beispielsweise einen Teil des Schriftsatzes auslagern oder externe Tools wie Bibtex verwenden. Dies ist über das \write18Tex-Grundelement verfügbar.

The problem is that it allows for almost everything.

Eine Tex-Datei soll portierbar sein und man sollte beim Kompilieren einer Drittanbieterdatei keine Sicherheitsprobleme befürchten müssen. Daher ist dieses Primitiv standardmäßig deaktiviert.

Wenn ein Benutzer es verwenden muss, muss er dem Compiler ausdrücklich mitteilen, dass er dem Autor der Datei bei der Shell-Interaktion vertraut, und genau das ist der Sinn des optionalen --shell-escapeArguments.

Wird seit Jahren \write18als Hintertür zum Betriebssystem verwendet. Syntaktisch behandelt TeX es als Schreiben in eine Datei, register 18wird aber als bereits geöffnete Datei behandelt, die tatsächlich Befehle ausführt.

„Uneingeschränkt“ write18bedeutet, dass Sie jeden beliebigen Befehl ausführen können. Wenn Sie dies also zulassen und eine TeX-Datei ausführen, die Ihnen jemand gesendet hat, kann es sein, dass beliebiger Code ausgeführt wird, Ihre Kennwortdatei per E-Mail an einen Spam-Bot gesendet wird oder was auch immer.

Dies stellt offensichtlich ein Sicherheitsrisiko dar, aber es gibt einige Befehle, die von Natur aus Teil der Tex-Distribution sind und die Sie möglicherweise immer zulassen möchten (z. B. Bild- und Schriftartkonvertierung). Daher ermöglicht Ihnen Web2C (oder den Texlive-Betreuern standardmäßig), eine Reihe „erlaubter, sicherer“ Befehle einzurichten, die dann im eingeschränkten Modus ausgeführt werden dürfen.

Die dritte Alternative besteht darin, überhaupt keine Befehle von auszuführen \write18.

Was bedeutet „eingeschränktes \write18 aktiviert“ und warum meldet TexLive es ständig?

Wie aktiviere ich Shell-Escape in TeXworks?

PS

Manchmal müssen Sie den Cache leeren, damit das Paket funktioniert. Dies verlangsamt den Vorgang, vermeidet jedoch Fehler. Fügen Sie dazu die Option hinzu \usepackage[cache=false]{minted}.

verwandte Informationen