Titelleiste zur Anzeige des geprägten Codes hinzufügen

Titelleiste zur Anzeige des geprägten Codes hinzufügen

Ich möchte wissen, wie ich einem Python-Codeblock eine Titelleiste hinzufüge minted. Dies ist ein Beispiel für eine Titelleiste, die ich verwenden möchte:

Bildbeschreibung hier eingeben

Ich habe versucht, den Code von zu verwendendiese Lösungaber ich konnte den in dieser Lösung veröffentlichten Code nicht mit WinEdt mit dem kompilieren pdftex -shell-escape. Wenn ich den Code aus dem veröffentlichten ausführeLösung, erhalte ich diesen Fehler:

Fehler: Infile kann nicht gelesen werden: [Errno 2] Keine solche Datei oder kein solches Verzeichnis: „codeboxes_1.pyg“

! Fehler im Paket „minted“: Fehlende Pygments-Ausgabe; \inputminted wurde wahrscheinlich eine Datei zugewiesen, die nicht existiert. Andernfalls benötigen Sie möglicherweise die Paketoption „outputdir“, verwenden ein inkompatibles Build-Tool oder verwenden Frozencache mit einer fehlenden Datei.

Hier ist mein bisheriger Code:

CODE

\documentclass[letter, 12pt]{report}   

%###########################         FOR PYTHON         ####################################
% https://www.overleaf.com/learn/latex/Code_Highlighting_with_minted
\usepackage{minted}
\usepackage{xcolor} % to access the named colour LightGray
\definecolor{LightGray}{gray}{0.9}

\begin{document}

\begin{minted}
[
frame=lines,
framesep=2mm,
baselinestretch=1.2,
bgcolor=LightGray,
fontsize=\footnotesize,
firstnumber = 41,
linenos
]
{python}
fig = plt.subplots(figsize=(12,2))
ax = plt.subplot(1,1,1)
ax.plot(times, x)
ax.grid(True)
plt.ylabel('amplitude [in A.U.]', fontsize=14)
plt.xlabel('time [in sec]', fontsize=14)
plt.xticks(fontsize=13)
plt.yticks(fontsize=13)
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
plt.show()
\end{minted}

\end{document}

Antwort1

Es ist schwer zu verstehen, wie der von Ihnen gepostete Code die von Ihnen gepostete Fehlermeldung erzeugen konnte – oder haben Sie diese erhalten, als Sie den Code in der verlinkten Lösung ausprobiert haben? Es sieht so aus, als hätten Sie versucht, Code aus einer Datei einzugeben, und diese Datei war nicht vorhanden.

Der eigentliche Code, den Sie gepostet haben, wird für mich kompiliert, hat aber nicht die Titelleiste; dafür benötigen Sie das tcolorbox-Paket.

Unten finden Sie einen Versuch, den Code in der Lösung, auf die Sie verlinkt haben, so zu ändern, dass er für Ihren Python-Code verwendet werden kann. Ich habe mich nicht um die anderen in dieser Lösung definierten Umgebungen gekümmert: nur um die Umgebung, die Codeblöcke generiert, die wie Ihre gewünschte Ausgabe aussehen.

Dem dort angegebenen Code habe ich ein viertes Argument für die Startzeilennummer hinzugefügt.

Es unterscheidet sich jedoch immer noch ziemlich vom Stil des von Ihnen geposteten Codes: Möchten Sie Änderungen vornehmen?

\documentclass[letter, 12pt]{report}

\newcounter{commentCount}
\newcounter{filePrg}
\newcounter{inputPrg}

\usepackage[dvipsnames]{xcolor}
\usepackage{minted}

\usepackage[many]{tcolorbox}
\tcbuselibrary{listings}
\tcbuselibrary{minted}

\usepackage{ifthen}
\usepackage{fontawesome}

\usepackage{tabularx}
\newcolumntype{\CeX}{>{\centering\let\newline\\\arraybackslash}X}%
\newcommand{\TwoSymbolsAndText}[3]{%
  \begin{tabularx}{\textwidth}{c\CeX c}%
    #1 & #2 & #3
  \end{tabularx}%
}

\newtcblisting[use counter=inputPrg, number format=\arabic]{codeInput}[4]{
  listing engine=minted,
  minted language=#1,
  minted options={autogobble,linenos,breaklines,  firstnumber={#4}},
  listing only,
  size=title,
  arc=1.5mm,
  breakable,
  enhanced jigsaw,
  colframe=brown,
  coltitle=White,
  boxrule=0.5mm,
  colback=white,
  coltext=Black,
  title=\TwoSymbolsAndText{\faCode}{%
    \textbf{Input program \thetcbcounter}\ifthenelse{\equal{#2}{}}{}{\textbf{:} \textit{#2}}%
  }{\faCode},
  label=inputPrg:#3
}

\begin{document}

\begin{codeInput}{python}{A sample program.}{code01}{41}
fig = plt.subplots(figsize=(12,2))
ax = plt.subplot(1,1,1)
ax.plot(times, x)
ax.grid(True)
plt.ylabel('amplitude [in A.U.]', fontsize=14)
plt.xlabel('time [in sec]', fontsize=14)
plt.xticks(fontsize=13)
plt.yticks(fontsize=13)
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
plt.show()
\end{codeInput}

\end{document}

Python mit Kopfstange

verwandte Informationen