(注释行稍后会用到,但正如我们在 MWE 中看到的,它们与问题无关)
为什么代码框后面有一个 par 缩进?
平均能量损失
\documentclass{report}
\usepackage{lipsum}
\usepackage{tcolorbox}
\tcbuselibrary{minted,breakable,xparse,skins}
\DeclareTCBListing{myminted}{O{}m!O{}}{%
listing only,
minted language=#2,
minted options={%
#1},
#3}
\begin{document}
\lipsum[2]
\begin{myminted}{R}
p1 = graph_plot(g)
p2 = f_omega_cycle(g)
p1 + p2
\end{myminted}
\lipsum*[2]
\end{document}
答案1
默认情况下,如果您不更改/tcb/before
也不更改/tcb/after
,则tcolorbox
使用/tcb/autoparskip
样式,其执行以下操作:
如果长度
\parskip
大于0pt
文档开头的长度,则/tcb/parskip
执行样式。否则,
/tcb/noparskip
执行。
(看融入周围环境在手册中tcolorbox
)。对于您的情况,我们可以使用\showthe\parskip
after进行检查\begin{document}
,它会在终端上打印以下几行:
> 0.0pt plus 1.0pt.
l.44 \begin{document}\showthe\parskip
当用于比较 〈dimen〉 时,它不会大于0pt
(拉伸分量被丢弃)。您可以使用 来验证这一点,这将在输入流中\ifdim\parskip>0pt Y\else N\fi
留下。因此,鉴于您的设置,由于您的框既未指定也未指定 ,因此将执行该样式。手册告诉我们,这种样式类似于:N
/tcb/before
/tcb/after
/tcb/noparskip
tcolorbox
\tcbset{
noparskip/.style={
before={\par\pagebreak[0]\smallskip\parindent=0pt},
after={\par\smallskip}
}
}
因此tcolorbox
会自动\par\smallskip
在框后添加。只要\lipsum*
您的环境输出一个框,就会开始一个新段落,并且由于\noindent
尚未使用,因此您会得到正常的段落缩进。
如果您不想要这种缩进,您可以在框选项中使用after={\par\smallskip\noindent}
或(取决于所需的垂直间距)。after={\par\noindent}
\documentclass{article}
\usepackage{lipsum}
\usepackage{tcolorbox}
\tcbuselibrary{minted,xparse}
\DeclareTCBListing{myminted}{O{}m!O{}}{%
after={\par\smallskip\noindent},
listing only,
minted language=#2,
minted options={#1},
#3}
\begin{document}
\lipsum[2]
\begin{myminted}{R}
p1 = graph_plot(g)
p2 = f_omega_cycle(g)
p1 + p2
\end{myminted}
\lipsum*[2]
\end{document}
答案2
以下使用 LaTeX2e 内部的\@endpetrue
,用于在环境指定它(例如)时\end{<env>}
使用,如果在之后没有空行则抑制段落缩进,但如果您留下空行则会缩进。\@doendpe
itemize
myminted
\documentclass{report}
\usepackage{lipsum}
\usepackage{tcolorbox}
\tcbuselibrary{minted,breakable,xparse,skins}
\makeatletter
\newcommand*\mynoindent
{%
\par
\@endpetrue
}
\makeatother
%\definecolor{bg}{gray}{0.95}
\DeclareTCBListing{myminted}{O{}m!O{}}{%
% breakable=true,
% listing engine=minted,
listing only,
minted language=#2,
% minted style=default,
minted options={%
% linenos,
% gobble=0,
% breaklines=true,
% breakafter=,,
% fontsize=\small,
% numbersep=8pt,
#1},
% boxsep=0pt,
% left skip=0pt,
% right skip=0pt,
% left=25pt,
% right=0pt,
% top=3pt,
% bottom=3pt,
% arc=5pt,
% leftrule=0pt,
% rightrule=0pt,
% bottomrule=2pt,
% toprule=2pt,
% colback=bg,
% colframe=orange!70,
% enhanced,
% overlay={%
% \begin{tcbclipinterior}
% \fill[orange!20!white] (frame.south west) rectangle ([xshift=20pt]frame.north west);
% \end{tcbclipinterior}},
after={\mynoindent},
#3}
\begin{document}
\lipsum[2]
\begin{myminted}{R}
p1 = graph_plot(g)
p2 = f_omega_cycle(g)
p1 + p2
\end{myminted}
\lipsum*[2]
\begin{myminted}{R}
p1 = graph_plot(g)
p2 = f_omega_cycle(g)
p1 + p2
\end{myminted}
\lipsum*[2]
\end{document}
示例输出: