
Könnte mir jemand freundlicherweise sagen, wie ich eine Option an minted options
und eine tcolorbox
gleichzeitig an eine pythoncode
Tcolorbox-Auflistung übergeben kann? Ich meine, ich möchte, dass einige Optionen an übergeben werden minted options
, wie #1
im MWE unten gezeigt, und einige an tcolorbox
, wie gezeigt #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}
Antwort1
Was Sie getan haben, funktioniert mit kleinen Änderungen. Sie müssen Optionen an pythoncode
die Umgebung wie folgt übergeben
\begin{pythoncode}[linenos=true,]{colback=red!5!white,colframe=red!75!black,title=My nice heading}
Sie haben die Optionen tcolorbox
(dh pythoncode
) obligatorisch gemacht, daher müssen sie in Klammern eingeschlossen werden, wohingegen die minted
Optionen in gehören 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}
Einige Erläuterungen:
Wenn Sie definieren
\newtcblisting{pythoncode}[2][]{
Sie sagen, dass es zwei Argumente für die pythoncode
Umgebung geben wird. Mit einem leeren Argument []
machen Sie das erste Argument zu einem, optional
dessen Standardwert none ist. Das optionale Argument ist innerhalb zu verwenden brackets
oder kann einfach weggelassen werden, in welchem Fall der Standardwert (hier none) verwendet wird. Das zweite Argument ist obligatorisch und wird in Klammern gesetzt. Wenn Sie ihm keine Werte zuweisen möchten, verwenden Sie einfach {}
(anders als beim ersten, wo Sie keine verwenden müssen). Wenn Sie also keine Optionen haben, müssen Sie verwenden
\begin{pythoncode}{}
Unterm Strich [2][]
bedeutet dies, dass es zwei Argumente gibt, das erste Argument ist optional und hat einen Standard none
.