Cómo pasar dos opciones a tcolorbox

Cómo pasar dos opciones a tcolorbox

¿Podría alguien decirme cómo puedo pasar una opción minted optionsy otra tcolorboxal mismo tiempo a una pythoncodelista de tcolorbox? Quiero decir, quiero que se pasen algunas opciones a minted options, como se muestra #1en el MWE a continuación y otras se pasen a tcolorbox, como se muestra en #2.

\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}[2][]{    
  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}},
            #2,
}    

\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}    

Respuesta1

Lo que hiciste funciona con pequeños cambios. Tienes que pasar opciones a pythoncodeun entorno como este.

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

Ha hecho que las opciones sean tcolorbox(es decir, pythoncode) obligatorias, por lo que deben estar rodeadas por llaves mientras que las mintedopciones van dentro brakets.

\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}[2][]{
  listing engine=minted,
  breakable,
  colback=bg,
  colframe=black!70,
  listing only,
  minted style=colorful,
  minted language=python,
  minted options={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}},
            #2,
}

\begin{document}

\section{Python example}
\begin{pythoncode}[linenos=true,]{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}

ingrese la descripción de la imagen aquí

Alguna elaboración:

cuando defines

\newtcblisting{pythoncode}[2][]{

Usted está diciendo que habrá dos argumentos para el pythoncodemedio ambiente. Con un vacío [], estás creando el primer argumento optionalcuyo valor predeterminado es ninguno. El argumento opcional se debe usar dentro bracketso simplemente se puede omitir, en cuyo caso se usará el valor predeterminado (aquí ninguno). El segundo argumento es obligatorio y se coloca entre llaves. Si no desea darle ningún valor, simplemente úselo {}(a diferencia del primero, donde no necesita usar ninguno). Por lo tanto, sin opciones tienes que usar

\begin{pythoncode}{}

La conclusión es [2][]que hay dos argumentos, el primer argumento es opcional y tiene valor predeterminado none.

información relacionada