Как передать два параметра в tcolorbox

Как передать два параметра в tcolorbox

Может ли кто-нибудь любезно дать мне знать, как я могу передать один параметр в minted optionsи один в tcolorboxодновременно в pythoncodeсписок tcolorbox? Я имею в виду, я хочу, чтобы некоторые параметры передавались в minted options, как показано #1в MWE ниже, а некоторые передавались в tcolorbox, как показано #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}    

решение1

То, что вы сделали, работает с небольшими изменениями. Вам нужно передать параметры в pythoncodeсреду, как это

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

Вы сделали параметры tcolorbox(т. е. pythoncode) обязательными, поэтому их необходимо заключить в фигурные скобки, тогда как mintedпараметры находятся внутри 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}

введите описание изображения здесь

Некоторые пояснения:

Когда вы определяете

\newtcblisting{pythoncode}[2][]{

Вы говорите, что будет два аргумента для окружения pythoncode. С пустым []вы делаете первый аргумент, optionalзначением по умолчанию которого является none. Необязательный аргумент должен использоваться внутри bracketsили его можно просто опустить, в этом случае будет использоваться значение по умолчанию (здесь none). Второй аргумент является обязательным и заключен в фигурные скобки. Если вы не хотите придавать ему никаких значений, просто используйте {}(в отличие от первого, где вам не нужно использовать никаких значений). Следовательно, без опций вам придется использовать

\begin{pythoncode}{}

В нижней строке это [2][]означает, что есть два аргумента, первый аргумент является необязательным и имеет значение по умолчанию none.

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