tcolorbox에 두 가지 옵션을 전달하는 방법

tcolorbox에 두 가지 옵션을 전달하는 방법

누군가가 하나의 옵션을 tcolorbox 목록 에 동시에 minted options전달할 수 있는 방법을 알려줄 수 있습니까 ? 내 말은, 아래 MWE에 표시된 것처럼 일부 옵션이 에 전달되고 일부 옵션이 에 표시된 것처럼 전달되기를 원한다는 것입니다 .tcolorboxpythoncodeminted options#1tcolorbox#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때 중괄호로 묶어야 합니다 .mintedbrakets

\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선택적 인수는 내부에서 사용되거나 brackets기본값(여기에서는 없음)이 사용되는 경우 간단히 생략할 수 있습니다. 두 번째 인수는 필수이며 중괄호 안에 넣습니다. 아무 값도 지정하지 않으려면 간단히 사용하세요 {}(아무 것도 사용할 필요가 없는 첫 번째 것과는 달리). 따라서 옵션이 없으면 사용해야합니다

\begin{pythoncode}{}

결론은 [2][]두 개의 인수가 있다는 것을 의미합니다. 첫 번째 인수는 선택 사항이며 기본값이 있습니다 none.

관련 정보