在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}