Jupyter 使用 minted 而不是 listing 的 In/Out 风格

Jupyter 使用 minted 而不是 listing 的 In/Out 风格

Jupyter 输入/输出无溢出提供的解决方案非常棒。我使用 tcbuselibrary 中的 minted 选项来实现它,并且我在源代码的开头得到了这个额外的空格,而使用 listings 则不会得到这个空格。

我想知道是否有办法实现这一点,同时将“Out:”的冒号与我的第一行代码对齐,因为它是使用这篇文章的第一个答案中的列表完成的Jupyter 输入/输出无溢出

我的MWE

\documentclass[12pt]{article}
\usepackage[margin=1in]{geometry}
\usepackage{verbatim}
\usepackage{xcolor}
\usepackage{minted}

\usepackage[most]{tcolorbox}
\tcbuselibrary{minted}
\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{NBout}

\newtcblisting{NotebookOut}{
    breakable,
    boxrule=.5pt,
    size=fbox,
    left skip = \promptwidth + \promptsep,
    pad at break*=1mm,
    opacityfill=1,
    phantom=\refstepcounter{NBout},
    title=\prompt{Out}{outcolor}{\theNBin}{\hspace{\promptsep}},
    fonttitle=\linespread{1}\small,
    attach title to upper,
    listing only,
    minted language = python,
}




\begin{document}


\begin{NotebookOut}
import math as m 

A =[[0,0,0],[0,0,0]]

for i in range(2):
    for j in range(3):
        A[i][j] = m.sin(i*j)
        
print(A)
\end{NotebookOut}



\end{document}

这是我得到的快照铸造环境

虽然我仍在使用 minted 选项,但我的目标是让“Out:”与“import”一词对齐。这可能吗,还是我遗漏了什么?感谢您的帮助,欢迎对我的代码提出任何建议。

答案1

主要调整的是\vspace的定义\prompt,似乎在您的设置中,较大的负空间是-1.7\baselineskip合适的(通过眼睛判断)。我还建议您增加\promptwidth并可能降低nobeforeafter以获得

示例输出

\documentclass[12pt]{article}
\usepackage[margin=1in]{geometry}
\usepackage{verbatim}
\usepackage{xcolor}
\usepackage{minted}

\usepackage[most]{tcolorbox}
\tcbuselibrary{minted}
%\tcbset{nobeforeafter}

\definecolor{outcolor}{HTML}{D84315}

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

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

\newcounter{NBout}

\newtcblisting{NotebookOut}{
    breakable,
    boxrule=.5pt,
    size=fbox,
    left skip = \promptwidth + \promptsep,
    pad at break*=1mm,
    opacityfill=1,
    phantom=\refstepcounter{NBout},
    title=\prompt{Out}{outcolor}{\theNBout}{\hspace{\promptsep}},
    fonttitle=\linespread{1}\small,
    attach title to upper,
    listing only,
    minted language = python,
}

\begin{document}


\begin{NotebookOut}
import math as m

A =[[0,0,0],[0,0,0]]

for i in range(2):
    for j in range(3):
        A[i][j] = m.sin(i*j)

print(A)
\end{NotebookOut}

\noindent Text

\begin{NotebookOut}
import math as m

A =[[0,0,0],[0,0,0]]

for i in range(2):
    for j in range(3):
        A[i][j] = m.sin(i*j)

print(A)
\end{NotebookOut}



\end{document}

相关内容