如何避免 tcblistings 和 parskip 包出现“过满”警告?

如何避免 tcblistings 和 parskip 包出现“过满”警告?

考虑以下 MWE:

\documentclass{article}
\usepackage{lipsum}
\usepackage{tcolorbox}
%%% this two following packages are used in the format I have to use
\usepackage[parfill]{parskip}

\begin{document}
\lipsum[1]

\begin{tcolorbox}
     checking content
\end{tcolorbox}

\lipsum[1]
\end{document}

它编译得很好,有正确对齐的框,但它给出了一个

mwe-tcbox.tex|12 warning| Overfull \hbox (30.0pt too wide) in paragraph at lines 12--12

我尝试过 tcbset调整后的技巧从这个答案,但它不起作用;行

\tcbset{before app=\parfillskip0pt}

(添加[hooks]tcolorbox包中)没有声音,但是没有解决警告。

如果我从代码中删除,\usepackage[parfill]{parskip}一切就都好了 --- 但我真的不能这么做,因为它是我必须用于此文档width=0.9\linewidth的格式。我可以使用类似 tcolorbox 选项中的某些东西来破解它,但是 --- 这是一种破解。

我也能设法使用静音警告silence使用包--- 但同样,这也会关闭真实的警告。

我可以避免警告并仍然使用颜色框的完整文本宽度吗?

答案1

parfill该包中的选项设置parskip\parfillskip30pt plus 1fil以避免段落的最后一行(几乎)与右边距齐平:难怪你会得到一行恰好超出 30pt 的超额行。

重新定义parskip发行风格\parfillskip=0pt

\documentclass[draft]{article}
\usepackage{lipsum}
\usepackage{tcolorbox}

%%% this two following packages are used in the format I have to use
\usepackage[parfill]{parskip}

\tcbset{
  parskip/.style={
    before={\par\pagebreak[0]\parindent=0pt},
    after={\parfillskip=0pt\par},
  },
}

\begin{document}

\lipsum[1]

\begin{tcolorbox}
     checking content
\end{tcolorbox}

\lipsum[1]

\the\parfillskip

\end{document}

我添加了\the\parfillskip显示它已正确重置以及draft证明没有过满的盒子的选项。

在此处输入图片描述

相关内容