根据标题,每当我使用带有非零 parindent 的 tcolorbox 和 DispWithArrows 环境的组合时,我都会得到一个过满的 hbox。我没有特别尝试,因为我不知道有什么可以改变/影响,因为即使使用上述三项的最小组合,问题仍然存在。
以下是 MWE:
\documentclass{minimal}
\overfullrule=1mm
\usepackage{witharrows,tcolorbox}
\begin{document}
\begin{tcolorbox}[before upper*={\setlength{\parindent}{15pt}}]
\begin{DispWithArrows*}
& 2 + 2 \\ {}={} & 4
\end{DispWithArrows*}
\end{tcolorbox}
\end{document}
在此先感谢您的帮助。
答案1
评论:
witharrows
v2.6d 2022-01-01(参见texlive 的 svn 仓库中的差异) 已修复此问题,因此您不需要以下\AtBeginEnvironment
补丁。
原始答案:
在前面加上一个\noindent
to\begin{DispWithArrows*}
就可以了。你可以使用以下命令自动插入它:
\AtBeginEnvironment{DispWithArrows*}{\ifvmode\noindent\fi}
完整示例
\documentclass{article}
\usepackage{witharrows,tcolorbox}
\AtBeginEnvironment{DispWithArrows*}{\ifvmode\noindent\fi}
\overfullrule=1mm
\begin{document}
\begin{tcolorbox}[before upper*={\setlength{\parindent}{15pt}}]
\noindent\begin{DispWithArrows*}
& 2 + 2 \\ {}={} & 4
\end{DispWithArrows*}
\end{tcolorbox}
\end{document}
DispWithArrows(*)
顺便说一句,使用+可以重现,但使用+minipage
则不行,因此可以做一些改进。也许在align
minipage
witharrows
% witharrows.sty v2.6c 2021/03/04
\NewDocumentEnvironment { DispWithArrows } { ! d < > ! O { } }
{
% ...
% lines 1093--1101
\bool_if:NTF \l__witharrows_in_label_or_minipage_bool
{ \c_math_toggle_token }
{
\if_mode_vertical:
\nointerlineskip % <<< possible position
\hbox_to_wd:nn { .6 \linewidth } { }
\fi:
\c_math_toggle_token \c_math_toggle_token
}
% ...
}
\documentclass{article}
\usepackage{amsmath}
\usepackage{witharrows}
\overfullrule=1mm
\begin{document}
\verb|minipage| starts with a \verb|DispWithArrows(*)|:
\noindent\fbox{%
\begin{minipage}{\dimexpr\linewidth-2\fboxsep-2\fboxrule}
\setlength{\parindent}{15pt}
\begin{DispWithArrows}
a + b = c
\end{DispWithArrows}
\end{minipage}%
}
\bigskip
\verb|minipage| starts with an \verb|align(*)|:
\noindent\fbox{%
\begin{minipage}{\dimexpr\linewidth-2\fboxsep-2\fboxrule}
\setlength{\parindent}{15pt}
\begin{align}
a + b = c
\end{align}
\end{minipage}%
}
\end{document}
有关前面的额外垂直空间align
,请参阅如何使 minipage 中的公式间距保持一致,而不管水平对齐方式如何。