带有 parindent、tcolorbox 和 witharrows 的溢出 hbox

带有 parindent、tcolorbox 和 witharrows 的溢出 hbox

根据标题,每当我使用带有非零 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

评论

witharrowsv2.6d 2022-01-01(参见texlive 的 svn 仓库中的差异) 已修复此问题,因此您不需要以下\AtBeginEnvironment补丁。

原始答案

在前面加上一个\noindentto\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则不行,因此可以做一些改进。也许在alignminipagewitharrows

% 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 中的公式间距保持一致,而不管水平对齐方式如何

相关内容