我的文档中使用了很多mdframed
跨页的示例环境。在这些环境中,我有一些结果表,我目前将它们放在环境中center
。但不幸的是,当这些表直接出现在分页符之后时,设置的跳过skiptopskip
会被忽略。
我正在寻找该问题的通用解决方案,或者甚至寻找center
看起来相同但不会遇到此问题的环境的替代方案。
梅威瑟:
\documentclass{article}
\usepackage[paperwidth=12cm, paperheight=6cm]{geometry}
\usepackage{mdframed}
\usepackage{xcolor}
\usepackage{booktabs}
\usepackage{blindtext}
\begin{document}
\begin{mdframed}[splittopskip=20pt,backgroundcolor=black!5]
\blindtext
\begin{center}
\begin{tabular}{ll}
\toprule
A & 1 \\
B & 2 \\
\bottomrule
\end{tabular}
\end{center}
\end{mdframed}
\end{document}
请注意,第二页尊重这一点skiptopsep
,但第三页不尊重这一点。
答案1
有两个问题,但都与 无关center
。可以通过注释掉center
环境来验证这一点……tabular
向左移动,但垂直空间不变。
那么,问题是什么?
- 表格垂直居中对齐。请尝试
\begin{tabular}[t]...
。此操作可恢复顶部对齐,但仅此而已,空间就会变得过大:
- 间距过大的问题似乎与上面的间距有关
\toprule
。如果这样做,您将得到以下结果X\begin{tabular}[t]{ll}\toprule...\end{tabular}
。规则与基线对齐,而不是字母空间的顶部,从而创建了额外的垂直空间。
我的解决方法是stackengine
告诉它如何tabular
相对于基线放置完整的内容。
\documentclass{article}
\usepackage[paperwidth=12cm, paperheight=6cm]{geometry}
\usepackage{mdframed}
\usepackage{xcolor}
\usepackage{booktabs}
\usepackage{blindtext}
\usepackage{stackengine}
\begin{document}
\begin{mdframed}[splittopskip=20pt,backgroundcolor=black!5]
\blindtext
\begin{center}
\belowbaseline[-\ht\strutbox]{\begin{tabular}[t]{ll}
\toprule
A & 1 \\
B & 2 \\
\bottomrule
\end{tabular}}
\end{center}
\end{mdframed}
\end{document}
附录
为了让 OP 更轻松地修改现有文档,我将上述方法包装到新环境中。qtabular
因此,要修复问题实例,只需将环境从 更改为tabular
即可qtabular
。
\documentclass{article}
\usepackage[paperwidth=12cm, paperheight=6cm]{geometry}
\usepackage{mdframed}
\usepackage{xcolor}
\usepackage{booktabs}
\usepackage{blindtext}
\usepackage{environ,stackengine}
\NewEnviron{qtabular}[1]{%
\def\tmp{\begin{tabular}[t]{#1}}%
\belowbaseline[-\ht\strutbox]{\expandafter\tmp\BODY\end{tabular}}%
}
\begin{document}
\begin{mdframed}[splittopskip=20pt,backgroundcolor=black!5]
\blindtext
\begin{center}
\begin{qtabular}{ll}
\toprule
A & 1 \\
B & 2 \\
\bottomrule
\end{qtabular}
\end{center}
\end{mdframed}
\end{document}
答案2
恕我直言,无论您使用 mdframed 定义了什么环境,您也可以使用 tcolorbox 创建它 - 减去使用 mdframed 时遇到的问题:
\documentclass{article}
\usepackage[paperwidth=12cm, paperheight=6cm]{geometry}
\usepackage[most]{tcolorbox}
\newtcolorbox{mdframed}{enhanced,breakable,sharp corners,colback=black!5,topsep at break=20pt,boxrule=0.4pt}
\usepackage{xcolor}
\usepackage{booktabs}
\usepackage{blindtext}
\usepackage{stackengine}
\begin{document}
\begin{mdframed}
abc\\abc\\\blindtext
\begin{center}
\begin{tabular}[t]{ll}
\toprule
A & 1 \\
B & 2 \\
\bottomrule
\end{tabular}
\end{center}
\end{mdframed}
\end{document}