这可能是也可能不是一个错误,所以我会先在这里询问,然后再报告。
在以下测试用例中:
\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