Проблема с добавлением заголовка в tcolorbox

Проблема с добавлением заголовка в tcolorbox

Я определил среду python в своем документе с помощью tcolorbox. Я хотел бы добавить заголовок к листингу. Однако компилятор жалуется на добавление следующего в pythoncodeсреду:

\begin{pythoncode}[colback=red!5!white,colframe=red!75!black,title=My nice heading]

Когда я удаляю вышеуказанные параметры и использую только \begin{pythoncode}[], код успешно компилируется. Ниже приведен MWE об этой проблеме.

\documentclass{book}    
\usepackage[left=1.00in, right=1.00in, top=1.00in, bottom=1.00in]{geometry}    

\usepackage{amsmath}    
\usepackage[pdftex]{graphicx, color}    
\usepackage{hyperref}       
\hypersetup{ %    
    pdfborder = {0 0 0},    
    colorlinks=true,    
}    

\usepackage[T1]{fontenc} 

\usepackage{tcolorbox}    
\tcbuselibrary{minted,skins,breakable}    


\newtcblisting{pythoncode}[1][]{    
  listing engine=minted,    
  breakable,   
  colback=bg,    
  colframe=black!70,    
  listing only,    
  minted style=colorful,    
  minted language=python,    
  minted options={linenos=true,numbersep=3mm,texcl=true,#1},    
  left=5mm,enhanced,    
  overlay={\begin{tcbclipinterior}\fill[black!25] (frame.south west)    
            rectangle ([xshift=5mm]frame.north west);\end{tcbclipinterior}}    
}    


\definecolor{bg}{rgb}{0.85,0.85,0.85}    

\begin{document}    

\section{Python example}    
\begin{pythoncode}[colback=red!5!white,colframe=red!75!black,title=My nice heading]    
# indent your Python code to put into an email    
import glob    
# glob supports Unix style pathname extensions    
python_files = glob.glob('*.py')    
for file_name in sorted(python_files):    
    print '    ------' + file_name    

    with open(file_name) as f:    
        for line in f:    
            print '    ' + line.rstrip()    

    print    
\end{pythoncode}    

\end{document}    

Может ли кто-нибудь пролить свет на эту проблему?

решение1

У вас аргумент, #1, в неправильном месте; в настоящее время он находится здесь:

minted options={linenos=true,numbersep=3mm,texcl=true,#1},    

поэтому вы передаете опции пакету minted, а это не то, что вы хотите делать.

Вместо этого переместите его в конец списка параметров, сразу после overlayкоманды:

  overlay={\begin{tcbclipinterior}\fill[black!25] (frame.south west)    
            rectangle ([xshift=5mm]frame.north west);\end{tcbclipinterior}},
            #1,

Вот рабочая версия — обратите внимание, что hyperrefв этом случае ее следует загрузить последней; см.Какие пакеты следует загружать после hyperref, а не до него?Больше подробностей.

% arara: pdflatex: {shell: yes}
\documentclass{book}    
\usepackage[left=1.00in, right=1.00in, top=1.00in, bottom=1.00in]{geometry}    

\usepackage{amsmath}    
\usepackage{tcolorbox}    
\tcbuselibrary{minted,skins,breakable}    

\usepackage{hyperref}       
\hypersetup{ %    
    pdfborder = {0 0 0},    
    colorlinks=true,    
}    

\newtcblisting{pythoncode}[1][]{    
  listing engine=minted,    
  breakable,   
  colback=bg,    
  colframe=black!70,    
  listing only,    
  minted style=colorful,    
  minted language=python,    
  minted options={linenos=true,numbersep=3mm,texcl=true},    
  left=5mm,enhanced,    
  overlay={\begin{tcbclipinterior}\fill[black!25] (frame.south west)    
            rectangle ([xshift=5mm]frame.north west);\end{tcbclipinterior}},
            #1,
}    

\begin{document}    

\section{Python example}    
\begin{pythoncode}[colback=red!5!white,colframe=red!75!black,title=My nice heading]    
# indent your Python code to put into an email    
import glob    
# glob supports Unix style pathname extensions    
python_files = glob.glob('*.py')    
for file_name in sorted(python_files):    
    print '    ------' + file_name    

    with open(file_name) as f:    
        for line in f:    
            print '    ' + line.rstrip()    

    print    
\end{pythoncode}    

\end{document}    

Связанный контент