tcblisting
我正在编写一个包含大量代码片段的文档,并且我已经使用包中的环境tcolorbox
来执行此操作。环境运行良好。
但我想要做的是抑制段落缩进,以便
\begin{mycode}
lots of stuff using my environment
\end{mycode}
which shows that Santa Claus \emph{does} exist,\ldots
具有以下效果不是缩进“这表明...”我知道这个after
参数是我在这里需要的;这在手册(针对 v3.12)的第 3.12 节(第 62 页)中有描述tcolorbox
。但是,我无法获得我想要的结果;例如after={\par\baselineskip\parindent=0pt}
不起作用。
我可以遍历\noindent
所有地方并将其放置,但是肯定有办法在环境定义本身中做到这一点吗?
有没有简单的方法可以做到这一点?
答案1
使用after={\par\vspace{\baselineskip}\noindent}
然后
\end{code}
which shows that Santa Claus \emph{does} exist,\ldots
(之后没有空行\end{code}
)或
\end{code}
%
which shows that Santa Claus \emph{does} exist,\ldots
如果您需要该空白以便于阅读。
\documentclass{article}
\usepackage{xcolor}
\usepackage[many]{tcolorbox}
\tcbuselibrary{listings}
\definecolor{light-gray}{gray}{0.95}
\newtcblisting{code}[1][]{
width=\linewidth,
enhanced,
boxrule=0.4pt,
colback=light-gray,
listing only,
top=0pt,
bottom=0pt,
listing options={
basicstyle=\footnotesize\ttfamily,
language=python,
showstringspaces=false,
},
after={\par\vspace{\baselineskip}\noindent} %% do you really need \vspace{\baselineskip}?
}
\begin{document}
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
\begin{code}
for i in range(n):
print('i = ', i)
\end{code}
%
which shows that Santa Claus \emph{does} exist,\ldots
\end{document}
答案2
有点老了,但我刚刚在另一个上下文中想到了这个问题。您可以尝试这样做来抑制 parindent,即使代码后有一个空行:
\documentclass{article}
\usepackage[many]{tcolorbox}
\makeatletter
\let\@oridoenpe\@doendpe
\def\@newdoendpe{%
\@endpetrue
\def\par{\@restorepar\global\let\@doendpe\@oridoenpe
\clubpenalty\@clubpenalty
\everypar
{{\setbox\z@\lastbox}%
\everypar{}}\par\@endpefalse}%
\everypar{{\setbox\z@\lastbox}%
\everypar{}\@restorepar\@endpefalse
}}
\newcommand\usenewdoendpe{\global\let\@doendpe\@newdoendpe}
\newcommand\useendparenv{\par\@endparenv}
\makeatother
\tcbuselibrary{listings}
\definecolor{light-gray}{gray}{0.95}
\newtcblisting{code}[1][]{
after={\usenewdoendpe\smallskip\useendparenv} %%
}
\begin{document}
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
\begin{code}
for i in range(n):
print('i = ', i)
\end{code}
which shows that Santa Claus \emph{does} exist,\ldots
\begin{code}
for i in range(n):
print('i = ', i)
\end{code}
which shows that Santa Claus \emph{does} exist,\ldots
\end{document}
编辑
它不适用于易碎的盒子(即使它们没有破损)。