mdframed+tikz 显示 overfullrule

mdframed+tikz 显示 overfullrule

这可能是也可能不是一个错误,所以我会先在这里询问,然后再报告。

在以下测试用例中:

\documentclass{article}
\usepackage[framemethod=tikz]{mdframed}

\overfullrule=5pt

\def\sentence{%
  to be the morphism from $\delta^*$ to $(\delta')^*$ (resp.\ to
  $(\delta'')^*$) such that $h'((p', p'')a(q', q''))$}

\begin{document}

\begin{mdframed}[hidealllines=true]
  \sentence
\end{mdframed}

\begin{mdframed}[rightline=false,topline=false]
  \sentence
\end{mdframed}

\end{document}

仅在第一个 mdframed 中绘制 overfullrule。我怎样才能让它在第二个 mdframed 中也起作用?这种对 overfullrule 的默默忽略可能真的很危险……

谢谢!

  • Arch Linux 上的 TeXlive 2012.26892-2
  • 来自 GitHub 的最新 mdframed(1.6c,mdframed.dtx 436 2012-06-23 09:49:13Z marco)

答案1

draft这个问题导致了现在在开发分支中实施的新选项。

https://github.com/marcodaniel/mdframed


环境 mdframed 的内容保存在 savebox 中。如果使用framemethod=tikz,则输出将由环境完成tikzpicture。为了允许三条不同线路的选项,我必须使用 tikz 提供的命令,\clip该命令还会剪辑溢出的框。

如果您使用该选项,hidealllines=true则没有任何内容可剪辑,从而导致输出过满的盒子。

要显示超满标记,您可以执行以下操作:

\makeatletter
\renewrobustcmd*\mdf@tikzbox@tfl[1]{%three or four borders
    %\clip
    \path(0,0)rectangle(\mdfboundingboxwidth,\mdfboundingboxheight);%
    \begin{scope}[mdfcorners]%
       \clip[preaction=mdfouterline]%
            [postaction=mdfbackground]%
            [postaction=mdfinnerline]#1;%
    \end{scope}%
    \path[mdfmiddleline,mdfcorners]#1;
  }%

\renewrobustcmd*\mdf@tikzbox@otl[2]{%one or two borders
    %\clip
    \path(0,0)rectangle(\mdfboundingboxwidth,\mdfboundingboxheight);%
    \begin{scope}
       \path[mdfouterline,mdfcorners]#1;%
       \clip[postaction=mdfbackground]#2;%
       \path[mdfinnerline,mdfcorners]#1;%
    \end{scope}%
    \path[mdfmiddleline,mdfcorners]#1;}%
\makeatother

在此处输入图片描述

相关内容