Jupyter In/Out ohne Überlauf

Jupyter In/Out ohne Überlauf

InJupyter In- und Out-StilUndDie letzte Zeile in FancyVRB hat einen merkwürdigen AbstandIch habe nach einer sauberen Lösung gefragt, um einen Jupyter-Stil in LaTeX zu realisieren.

Das ist soweit super und funktioniert recht gut und solide. Allerdings wäre es perfekt, wenn die Ein-/Ausgabezahlen links nicht überlaufen würden. Ist das ohne allzu großen Aufwand möglich?

Das Minimalbeispiel, mit dem ich arbeite, ist der Antwort inDie letzte Zeile in FancyVRB hat einen merkwürdigen Abstand.

Antwort1

Sie können es tcolorboxnach rechts verschieben, indem Sie a angeben left skip. Im folgenden Code habe ich zwei Längen für die Breite der Eingabeaufforderung und ihren Abstand vom Ausgabefeld angegeben.

Beispielausgabe

\documentclass[twoside,a4paper]{scrartcl}

%-------
%   Typography
%-------

\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{textcomp}
\usepackage{dsfont}
\usepackage{microtype}
\usepackage[onehalfspacing]{setspace}

%-------
%   Notebook Styling
%-------

\usepackage[most]{tcolorbox}
\tcbuselibrary{listings}
\tcbset{nobeforeafter}

\definecolor{outcolor}{HTML}{D84315}

\newlength{\promptwidth}
\setlength{\promptwidth}{30pt}
\newlength{\promptsep}
\setlength{\promptsep}{5.5pt}

\newcommand{\prompt}[4]{%
    \makebox[0pt][r]{\texttt{\color{#2}#1[#3]:#4}}\vspace{-\baselineskip}%
}

\newcounter{NBin}

\newtcblisting{NotebookOut}{
    breakable,
    boxrule=.5pt,
    size=fbox,
    left skip = \promptwidth + \promptsep,
    pad at break*=1mm,
    opacityfill=1,
    phantom=\refstepcounter{NBin},
    title=\prompt{}{outcolor}{\theNBin}{\hspace{\promptsep}},
    fonttitle=\linespread{1}\small,
    attach title to upper,
    listing only,
    listing options={
        language=python,
        basicstyle=\linespread{1}\small\ttfamily,
        basewidth=.5em,
        aboveskip=0pt,
        belowskip=0pt,
        showstringspaces=false,
    }
}

\begin{document}

\begin{NotebookOut}
print('Hello World!')
print('Hello World!')
\end{NotebookOut}

\noindent
Text
\begin{NotebookOut}
print('Hello World!')
print('Hello World!')
\end{NotebookOut}

\end{document}

verwandte Informationen