
Gostaria de saber como adicionar uma barra de título a um minted
bloco de código python? Este é um exemplo de barra de título que gostaria de usar:
Eu tentei usar o código deesta soluçãomas não consegui publicar o código nessa solução para compilar usando WinEdt com o pdftex
-shell-escape
. Quando executo o código do postadosolução, recebo este erro:
Erro: não é possível ler o arquivo: [Erro 2] Arquivo ou diretório inexistente: 'codeboxes_1.pyg'
! Erro de pacote cunhado: saída de pigmentos ausente; \inputminted provavelmente recebeu um arquivo que não existe - caso contrário, você pode precisar da opção de pacote outputdir, ou pode estar usando uma ferramenta de construção incompatível, ou pode estar usando o frozencache com um arquivo ausente.
Aqui está meu código até agora:
CÓDIGO
\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}
Responder1
É difícil ver como o código que você postou poderia gerar a mensagem de erro que você postou – ou você percebeu isso ao testar o código na solução vinculada? Parece que você estava tentando inserir código de um arquivo e não tinha esse arquivo presente.
O código real que você postou é compilado para mim, mas não possui a barra de título; para isso você precisa do pacote tcolorbox.
Abaixo está uma tentativa de modificar o código na solução que você vinculou para usar em seu código python. Não me preocupei com os outros ambientes definidos nessa solução: apenas o ambiente que gera blocos de código que se parecem com a saída desejada.
Adicionei um quarto argumento para o número da linha inicial ao código fornecido ali.
No entanto, ainda é bastante diferente do estilo do código que você postou: há ajustes que você deseja fazer?
\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}