diff options
author | Norbert Preining <norbert@preining.info> | 2024-03-31 03:00:49 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2024-03-31 03:00:49 +0000 |
commit | d1109269e156ddc67b67f942a2e5aad3b37a40a6 (patch) | |
tree | 41f9af43bf0904dcbac73736c58ace6cc5e28f36 /macros/latex/contrib/pynotebook/tex/pynotebook.sty | |
parent | 16a9aadc4ae32ef5d7f20d62a3606b05e20f3405 (diff) |
CTAN sync 202403310300
Diffstat (limited to 'macros/latex/contrib/pynotebook/tex/pynotebook.sty')
-rw-r--r-- | macros/latex/contrib/pynotebook/tex/pynotebook.sty | 192 |
1 files changed, 157 insertions, 35 deletions
diff --git a/macros/latex/contrib/pynotebook/tex/pynotebook.sty b/macros/latex/contrib/pynotebook/tex/pynotebook.sty index f899c44b15..242c6c0988 100644 --- a/macros/latex/contrib/pynotebook/tex/pynotebook.sty +++ b/macros/latex/contrib/pynotebook/tex/pynotebook.sty @@ -3,7 +3,9 @@ % licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{pynotebook}[2024/02/19 0.1.1 Present codes like in jupyter notebook] +\ProvidesPackage{pynotebook}[2024/03/30 0.1.3 Present codes like in jupyter notebook] +%0.1.3 Modification with gobble (piton) +%0.1.2 Enhancement with gobble and new code for in/out with all numbers lines %0.1.1 New block In/Out %0.1.0 Initial version @@ -116,7 +118,7 @@ {\tcbset{tcbjpuptitlein/.style={title=\promptjupyter*{\JupyterPromptIn}{red!75!black}{\theJupyterIn}{\hspace*{\OffsetPromptJupyter}}}}}% {\refstepcounter{JupyterIn}\tcbset{tcbjpuptitlein/.style={title=\promptjupyter{\JupyterPromptIn\ifnum\value{JupyterIn}<10~\fi}{red!75!black}{\theJupyterIn}{\hspace*{\OffsetPromptJupyter}}}}}% \tcblisting{% - breakable,sharp corners=all,boxrule=0.5pt,enhanced,size=small,width=#3,tcbjpuparskip, + breakable,sharp corners=all,enhanced,size=small,width=#3,tcbjpuparskip,boxrule=0.5pt, colframe=gray,colback=lightgray!15, left skip=\LargeurPromptJupyter+\OffsetPromptJupyter-2mm, tcbjpuptitlein, @@ -124,7 +126,7 @@ attach title to upper, listing only, listing options={style=PLJupyter,xleftmargin=\LargeurNumbersJupyter,numbers=left,firstnumber=1,numbersep=2mm},% - overlay={\begin{tcbclipinterior}\draw[line width=0.375pt,gray!75] ([xshift={\LargeurNumbersJupyter+1mm}]frame.south west)--([xshift={\LargeurNumbersJupyter+1mm}]frame.north west);\end{tcbclipinterior}},% + overlay={\begin{tcbclipinterior}\draw[line width=0.5pt,gray] ([xshift={\LargeurNumbersJupyter+1mm}]frame.south west)--([xshift={\LargeurNumbersJupyter+1mm}]frame.north west);\end{tcbclipinterior}},% #2 }% }% @@ -138,8 +140,8 @@ \addtolength{\LargeurNumbersJupyter}{0.5mm}% \noindent% \tcblisting{% - breakable,sharp corners=all,boxrule=0.3pt,enhanced,size=small,width=#2,tcbjpuparskip, - colframe=lightgray!15,colback=white, + breakable,sharp corners=all,enhanced,size=small,width=#2,tcbjpuparskip,boxrule=0.5pt, + colframe=lightgray!25,colback=white, left skip=\LargeurPromptJupyter+\OffsetPromptJupyter-2mm, attach title to upper, listing only, @@ -160,8 +162,8 @@ {\tcbset{tcbjpuptitleout/.style={title=\promptjupyter{\JupyterPromptOut\ifnum\value{JupyterIn}<10~\fi}{blue!75!black}{\theJupyterIn}{\hspace*{\OffsetPromptJupyter}}}}}% \noindent% \tcblisting{% - breakable,sharp corners=all,boxrule=0.3pt,enhanced,size=small,width=#3,tcbjpuparskip, - colframe=lightgray!15,colback=white, + breakable,sharp corners=all,enhanced,size=small,width=#3,tcbjpuparskip,boxrule=0.5pt, + colframe=lightgray!25,colback=white, left skip=\LargeurPromptJupyter+\OffsetPromptJupyter-2mm, tcbjpuptitleout, fonttitle=\linespread{1}\footnotesize, @@ -181,13 +183,13 @@ \addtolength{\LargeurNumbersJupyter}{0.5mm}% \noindent% \tcblisting{% - breakable,sharp corners=all,boxrule=0.5pt,enhanced,size=small,width=#2,tcbjpuparskip, + breakable,sharp corners=all,enhanced,size=small,width=#2,tcbjpuparskip,boxrule=0.5pt, colframe=gray,colback=lightgray!15, left skip=\LargeurPromptJupyter+\OffsetPromptJupyter-2mm, attach title to upper, listing only, listing options={style=tcblatex,basicstyle=\ttfamily\footnotesize,numberstyle=\scriptsize\ttfamily\color{gray},xleftmargin=\LargeurNumbersJupyter,numbers=left,firstnumber=1,numbersep=2mm},% - overlay={\begin{tcbclipinterior}\draw[line width=0.375pt,gray!75] ([xshift={\LargeurNumbersJupyter+1mm}]frame.south west)--([xshift={\LargeurNumbersJupyter+1mm}]frame.north west);\end{tcbclipinterior}},% + overlay={\begin{tcbclipinterior}\draw[line width=0.5pt,gray] ([xshift={\LargeurNumbersJupyter+1mm}]frame.south west)--([xshift={\LargeurNumbersJupyter+1mm}]frame.north west);\end{tcbclipinterior}},% #1 }% }% @@ -200,7 +202,7 @@ \SetJupyterLengths% \addtolength{\LargeurNumbersJupyter}{0.5mm}% \noindent% - \tcolorbox[breakable,sharp corners=all,boxrule=0.3pt,enhanced,size=small,width=#2,tcbjpuparskip,colframe=lightgray!15,colback=white,left skip=\LargeurPromptJupyter+\OffsetPromptJupyter-2mm, + \tcolorbox[breakable,sharp corners=all,enhanced,size=small,boxrule=0.5pt,width=#2,tcbjpuparskip,colframe=lightgray!25,colback=white,left skip=\LargeurPromptJupyter+\OffsetPromptJupyter-2mm, attach title to upper,fontupper=\footnotesize,tcbjpuparskip,#1]% }% {% @@ -211,7 +213,7 @@ %----With Piton (only lualatex) \ifluatex \RequirePackage{piton} -\RequirePackage{environ} +%\RequirePackage{environ} \newlength{\LargeurPromptJupiter} \newlength{\LargeurPromptJupiterIn} \newlength{\LargeurPromptJupiterOut} @@ -226,31 +228,32 @@ \settowidth{\LargeurNumbersJupiter}{\footnotesize\texttt{00}}% } -\NewPitonEnvironment{NotebookPitonIn}{ s O{} m }% +\NewPitonEnvironment{NotebookPitonIn}{ s O{} m !D<>{} }% {% \SetJupiterLengths% \IfBooleanTF{#1}% {\tcbset{tcbjpuptitlein/.style={title=\promptjupyter*{\JupyterPromptIn}{red!75!black}{\theJupyterIn}{\hspace*{\OffsetPromptJupiter}}}}}% {\refstepcounter{JupyterIn}\tcbset{tcbjpuptitlein/.style={title=\promptjupyter{\JupyterPromptIn\ifnum\value{JupyterIn}<10~\fi}{red!75!black}{\theJupyterIn}{\hspace*{\OffsetPromptJupiter}}}}}% \noindent% - \PitonOptions{left-margin={\LargeurNumbersJupiter+1.75mm},all-line-numbers}% - \PitonOptions{tabs-auto-gobble,break-lines,indent-broken-lines}% + \PitonOptions{left-margin={\LargeurNumbersJupiter+1.75mm},line-numbers={skip-empty-lines=false,label-empty-lines=true}}% + \PitonOptions{break-lines,indent-broken-lines,continuation-symbol={},#4}% %on crée la boîte - \tcolorbox[breakable,sharp corners=all,boxrule=0.5pt,enhanced,size=small,width=#3,colframe=gray,colback=lightgray!15,left skip=\LargeurPromptJupiter+\OffsetPromptJupiter-2mm,tcbjpuptitlein,fonttitle=\linespread{1}\footnotesize,attach title to upper,fontupper=\footnotesize,overlay={% - \begin{tcbclipinterior}\draw[line width=0.375pt,gray!75] ([xshift={\LargeurNumbersJupiter+2.25mm}]frame.south west)--([xshift={\LargeurNumbersJupiter+2.25mm}]frame.north west);\end{tcbclipinterior}},bottom=-0.5mm,tcbjpuparskip,#2]% + \tcolorbox[size=small,breakable,sharp corners=all,boxrule=0.5pt,enhanced,width=#3,colframe=gray,colback=lightgray!15,left skip=\LargeurPromptJupiter+\OffsetPromptJupiter-2mm,tcbjpuptitlein,fonttitle=\linespread{1}\footnotesize,attach title to upper,fontupper=\footnotesize,overlay={% + \begin{tcbclipinterior}\draw[line width=0.5pt,gray] ([xshift={\LargeurNumbersJupiter+2.25mm}]frame.south west)--([xshift={\LargeurNumbersJupiter+2.25mm}]frame.north west);\end{tcbclipinterior}},bottom=-0.5mm,top=0.5mm,tcbjpuparskip,#2]% }% {% \endtcolorbox% + \ignorespacesafterend% } -\NewDocumentEnvironment{NotebookPitonConsole}{ O{} m }% +\NewDocumentEnvironment{NotebookPitonConsole}{ O{} m !D<>{} }% {% \SetJupiterLengths% \noindent% - \PitonOptions{tabs-auto-gobble,break-lines,indent-broken-lines}% + \PitonOptions{width={#2-5mm-\LargeurPromptJupiter-\OffsetPromptJupiter+2mm},break-lines,end-of-broken-line={},continuation-symbol={},#3}% %on crée la boîte \PyLTVerbatimEnv% - \tcolorbox[breakable,sharp corners=all,boxrule=0.3pt,enhanced,size=small,width=#2,colframe=lightgray!15,colback=white,left skip=\LargeurPromptJupiter+\OffsetPromptJupiter-2mm,attach title to upper,fontupper=\footnotesize,bottom=-0.5mm,tcbjpuparskip,#1]% + \tcolorbox[breakable,sharp corners=all,enhanced,size=small,boxrule=0.5pt,width=#2,colframe=lightgray!25,colback=white,left skip=\LargeurPromptJupiter+\OffsetPromptJupiter-2mm,attach title to upper,fontupper=\footnotesize,bottom=-0.5mm,tcbjpuparskip,#1]% \begin{pythonq}% }% {% @@ -261,19 +264,20 @@ tex.print("\\end{Piton}") }% \endtcolorbox% + \ignorespacesafterend% } -\NewDocumentEnvironment{NotebookPitonOut}{ s O{} m }% +\NewDocumentEnvironment{NotebookPitonOut}{ s O{} m !D<>{} }% {% \SetJupiterLengths% \IfBooleanTF{#1}% {\tcbset{tcbjpuptitleout/.style={title=\promptjupyter*{\JupyterPromptOut}{blue!75!black}{\theJupyterIn}{\hspace*{\OffsetPromptJupiter}}}}}% {\tcbset{tcbjpuptitleout/.style={title=\promptjupyter{\JupyterPromptOut\ifnum\value{JupyterIn}<10~\fi}{blue!75!black}{\theJupyterIn}{\hspace*{\OffsetPromptJupiter}}}}}% \noindent% - \PitonOptions{tabs-auto-gobble,break-lines,indent-broken-lines}% + \PitonOptions{continuation-symbol={},end-of-broken-line={},break-lines,#4}% %on crée la boîte \PyLTVerbatimEnv% - \tcolorbox[breakable,sharp corners=all,boxrule=0.3pt,enhanced,size=small,width=#3,colframe=lightgray!15,colback=white,left skip=\LargeurPromptJupiter+\OffsetPromptJupiter-2mm,tcbjpuptitleout,fonttitle=\linespread{1}\footnotesize,attach title to upper,fontupper=\footnotesize,bottom=-0.5mm,tcbjpuparskip,#2]% + \tcolorbox[breakable,sharp corners=all,enhanced,size=small,boxrule=0.5pt,width=#3,colframe=lightgray!25,colback=white,left skip=\LargeurPromptJupiter+\OffsetPromptJupiter-2mm,tcbjpuptitleout,fonttitle=\linespread{1}\footnotesize,attach title to upper,fontupper=\footnotesize,bottom=-0.5mm,top=0.5mm,tcbjpuparskip,#2]% \begin{pythonq}% }% {% @@ -284,42 +288,44 @@ tex.print("\\end{Piton}") }% \endtcolorbox% + \ignorespacesafterend% } -\NewPitonEnvironment{NotebookPitonRaw}{ O{} m }% +\NewPitonEnvironment{NotebookPitonRaw}{ O{} m !D<>{} }% {% \SetJupiterLengths% \noindent% \SetPitonStyle{Number=}% - \PitonOptions{left-margin={\LargeurNumbersJupiter+1.75mm},all-line-numbers,language=minimal}% - \PitonOptions{tabs-auto-gobble,break-lines,indent-broken-lines}% + \PitonOptions{left-margin={\LargeurNumbersJupiter+1.75mm},line-numbers={skip-empty-lines=false,label-empty-lines=true},language=minimal}% + \PitonOptions{continuation-symbol={},break-lines,indent-broken-lines,#3}% %on crée la boîte - \tcolorbox[breakable,sharp corners=all,boxrule=0.5pt,enhanced,size=small,width=#2,colframe=gray,colback=lightgray!15,left skip=\LargeurPromptJupiter+\OffsetPromptJupiter-2mm,attach title to upper,fontupper=\footnotesize,overlay={% - \begin{tcbclipinterior}\draw[line width=0.375pt,gray!75] ([xshift={\LargeurNumbersJupiter+2.25mm}]frame.south west)--([xshift={\LargeurNumbersJupiter+2.25mm}]frame.north west);\end{tcbclipinterior}},bottom=-0.5mm,tcbjpuparskip,#1]% + \tcolorbox[breakable,sharp corners=all,enhanced,size=small,boxrule=0.5pt,width=#2,colframe=gray,colback=lightgray!25,left skip=\LargeurPromptJupiter+\OffsetPromptJupiter-2mm,attach title to upper,fontupper=\footnotesize,overlay={% + \begin{tcbclipinterior}\draw[line width=0.5pt,gray] ([xshift={\LargeurNumbersJupiter+2.25mm}]frame.south west)--([xshift={\LargeurNumbersJupiter+2.25mm}]frame.north west);\end{tcbclipinterior}},bottom=-0.5mm,tcbjpuparskip,#1]% }% {% \endtcolorbox% + \ignorespacesafterend% } \NewDocumentEnvironment{NotebookPitonMarkdown}{ O{} m }% {% \SetJupiterLengths% \noindent% - \tcolorbox[breakable,sharp corners=all,boxrule=0.3pt,enhanced,size=small,width=#2,tcbjpuparskip,colframe=lightgray!15,colback=white,left skip=\LargeurPromptJupiter+\OffsetPromptJupiter-2mm, + \tcolorbox[breakable,sharp corners=all,enhanced,size=small,boxrule=0.5pt,width=#2,tcbjpuparskip,colframe=lightgray!25,colback=white,left skip=\LargeurPromptJupiter+\OffsetPromptJupiter-2mm, attach title to upper,fontupper=\footnotesize,tcbjpuparskip,#1]% }% {% \endtcolorbox% + \ignorespacesafterend% }% -\NewDocumentEnvironment{NotebookPitonInOut}{ s O{} m }% +\NewDocumentEnvironment{NotebookPitonInOut}{ s O{} m !D<>{} }% {% \PyLTVerbatimEnv% \begin{pythonq}% }% {% \end{pythonq}% - % \SetJupiterLengths% \IfBooleanTF{#1}% {% @@ -330,10 +336,11 @@ \tcbset{tcbjpuptitlein/.style={title=\promptjupyter{\JupyterPromptIn\ifnum\value{JupyterIn}<10~\fi}{red!75!black}{\theJupyterIn}{\hspace*{\OffsetPromptJupiter}}}}% }% \noindent% - \tcolorbox[breakable,sharp corners=all,boxrule=0.5pt,enhanced,size=small,width=#3,colframe=gray,colback=lightgray!15,left skip=\LargeurPromptJupiter+\OffsetPromptJupiter-2mm,tcbjpuptitlein,fonttitle=\linespread{1}\footnotesize, - attach title to upper,fontupper=\footnotesize,overlay={\begin{tcbclipinterior}\draw[line width=0.375pt,gray!75] ([xshift={\LargeurNumbersJupiter+2.25mm}]frame.south west)--([xshift={\LargeurNumbersJupiter+2.25mm}]frame.north west) ;\end{tcbclipinterior}},bottom=-0.5mm,tcbjpuparskip,#2]% + \tcolorbox[breakable,sharp corners=all,enhanced,size=small,boxrule=0.5pt,width=#3,colframe=gray,colback=lightgray!15,left skip=\LargeurPromptJupiter+\OffsetPromptJupiter-2mm,tcbjpuptitlein,fonttitle=\linespread{1}\footnotesize, + attach title to upper,fontupper=\footnotesize,overlay={\begin{tcbclipinterior}\draw[line width=0.5pt,gray] ([xshift={\LargeurNumbersJupiter+2.25mm}]frame.south west)--([xshift={\LargeurNumbersJupiter+2.25mm}]frame.north west) ;\end{tcbclipinterior}},bottom=-0.5mm,top=0.5mm,tcbjpuparskip,#2]% + %\PitonOptions{width={#3-5mm}} \directlua{% - tex.print("\\begin{Piton}[left-margin=\\LargeurNumbersJupiter+1.75mm,all-line-numbers,tabs-auto-gobble,break-lines,indent-broken-lines]") + tex.print("\\begin{Piton}[left-margin=\\LargeurNumbersJupiter+1.75mm,line-numbers={skip-empty-lines=false,label-empty-lines=true},break-lines,indent-broken-lines,continuation-symbol={},#4]") tex.print(pyluatex.get_last_code()) tex.print("\\end{Piton}") }% @@ -347,13 +354,128 @@ }% \tcbset{reset}% \noindent% - \tcolorbox[breakable,sharp corners = all,boxrule=0.3pt,enhanced,size=small,width=#3,colframe=lightgray!15,colback=white,left skip=\LargeurPromptJupiter+\OffsetPromptJupiter-2mm,tcbjpuptitleout,fonttitle=\linespread{1}\footnotesize,attach title to upper,fontupper=\footnotesize,bottom=-0.5mm,tcbjpuparskip,#2]% + \tcolorbox[breakable,sharp corners = all,enhanced,size=small,boxrule=0.5pt,width=#3,colframe=lightgray!25,colback=white,left skip=\LargeurPromptJupiter+\OffsetPromptJupiter-2mm,tcbjpuptitleout,fonttitle=\linespread{1}\footnotesize,attach title to upper,fontupper=\footnotesize,bottom=-0.5mm,top=0.5mm,tcbjpuparskip,#2]% + %\PitonOptions{width={#3-5mm-\LargeurPromptJupiter-\OffsetPromptJupiter+2mm}} \directlua{% - tex.print("\\begin{Piton}[tabs-auto-gobble,break-lines,indent-broken-lines]") + tex.print("\\begin{Piton}[break-lines,continuation-symbol={},end-of-broken-line={},#4]") tex.print(pyluatex.get_last_output()) tex.print("\\end{Piton}") }% \endtcolorbox% + \ignorespacesafterend% +} + +\NewPitonEnvironment{NotebookPitonAllNum}{ s O{} m !D<>{} }% +{% +\SetJupiterLengths +\IfBooleanTF{#1}% +{\tcbset +{ +tcbjpuptitlein/.style = + { title = \promptjupyter*{\JupyterPromptIn} + {red!75!black} + {\theJupyterIn} + {\hspace*{\OffsetPromptJupiter}} + }% +}% +}% +{\refstepcounter{JupyterIn} +\tcbset +{ +tcbjpuptitlein/.style = + { title = \promptjupyter{\JupyterPromptIn \ifnum\value{JupyterIn}<10~\fi} + {red!75!black} + {\theJupyterIn} + {\hspace*{\OffsetPromptJupiter}} + } +}% +}% +\noindent +\PitonOptions +{ +left-margin = \LargeurNumbersJupiter + 1.75mm , +all-line-numbers, +break-lines, +indent-broken-lines, +continuation-symbol={}, +#4 +}% +\tcolorbox[breakable, + sharp corners=all, + enhanced, + size = small, + boxrule = 0.5pt, + width = #3, + colframe = gray, + colback = lightgray!15, + left skip = \LargeurPromptJupiter+\OffsetPromptJupiter-2mm, + tcbjpuptitlein, + fonttitle = \linespread{1}\footnotesize, + attach title to upper, + fontupper = \footnotesize, + overlay = {% + \begin{tcbclipinterior} + \draw[line width=0.5pt,gray] + ([xshift={\LargeurNumbersJupiter+2.25mm}]frame.south west) + --([xshift={\LargeurNumbersJupiter+2.25mm}]frame.north west) ; + \end{tcbclipinterior}}, + bottom = -0.5mm, + tcbjpuparskip, + #2]% +} +{ +\endtcolorbox +% +\tcbset{reset}% +\IfBooleanTF{#1}% +{ \tcbset +{ tcbjpuptitleout/.style = + { title = + \promptjupyter*{\JupyterPromptOut} + {blue!75!black} + {\theJupyterIn} + {\hspace*{\OffsetPromptJupiter}} + } +}% +}% +{ \tcbset +{ tcbjpuptitleout/.style = + { title = + \promptjupyter{\JupyterPromptOut \ifnum\value{JupyterIn}<10~\fi} + {blue!75!black} + {\theJupyterIn} + {\hspace*{\OffsetPromptJupiter}} + } +}% +}% +\tcolorbox[breakable, + sharp corners = all, + enhanced, + size = small, + boxrule = 0.5pt, + width = #3, + colframe = lightgray!25, + colback = white, + left skip = \LargeurPromptJupiter + \OffsetPromptJupiter - 2mm, + tcbjpuptitleout, + fonttitle = \linespread{1}\footnotesize, + attach title to upper, + fontupper = \footnotesize, + overlay = {% + \begin{tcbclipinterior} + \draw[line width=0.5pt,lightgray!15] + ([xshift={\LargeurNumbersJupiter+2.25mm}]frame.south west) + --([xshift={\LargeurNumbersJupiter+2.25mm}]frame.north west) ; + \end{tcbclipinterior}}, + bottom = -0.5mm, + tcbjpuparskip, + #2]% +\directlua{% +tex.print("\\begin{Piton}") +tex.print(pyluatex.execute(piton.get_last_code(), false, true, false, true)) +tex.print("\\end{Piton}") +}% +\endtcolorbox% } \fi |