
¿Podría alguien decirme cómo puedo pasar una opción minted options
y otra tcolorbox
al mismo tiempo a una pythoncode
lista de tcolorbox? Quiero decir, quiero que se pasen algunas opciones a minted options
, como se muestra #1
en 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 pythoncode
un 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 minted
opciones 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}
Alguna elaboración:
cuando defines
\newtcblisting{pythoncode}[2][]{
Usted está diciendo que habrá dos argumentos para el pythoncode
medio ambiente. Con un vacío []
, estás creando el primer argumento optional
cuyo valor predeterminado es ninguno. El argumento opcional se debe usar dentro brackets
o 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
.