我的表格有上面的标题,并在末尾设置了booktabs
's \bottomrule
。我想用 's 将图表(其标题在下面)与文本分开\topfigrule
\newcommand{\topfigrule}{\hrule}
但不适用于表格,因为它们之间已经被 足够分开了\bottomrule
。
我如何配置\topfigrule
才能仅对图形有效?
假设页面顶部始终只有一个浮动元素,要么是表格或者一个数字。
MWE:第一页有表格,第二页有图片。第一页不应该有 topfigrule。
\documentclass[captions=tableheading]{scrbook}
\usepackage{booktabs}
\usepackage{blindtext}
\newcommand{\topfigrule}{\vspace{0.5cm}\hrule}
\setlength{\textfloatsep}{0.5cm}
\begin{document}
\blindtext
\begin{table}
\caption{Foo}
\centering
\begin{tabular}{@{}ccccc@{}}
\toprule
1 & 2 & 3 & 4 & 5\\\midrule
a & b & c & d & e\\
\bottomrule
\end{tabular}
\end{table}
\clearpage
\blindtext
\begin{figure}
\centering
\caption{Bar}
\rule{2cm}{2cm}
\end{figure}
\end{document}
答案1
LaTeX 通常不会跟踪此时的浮点类型,但您可以让它记住它看到的最后一种类型,然后根据该类型制定规则:
\documentclass{article}
\makeatletter
\def\@comflelt#1{%
{\count@\count#1\divide\count@32 \xdef\lasttype{\the\count@}}%
\setbox\@tempboxa
\vbox{\unvbox\@tempboxa\box #1\vskip\floatsep}}
\newcommand{\topfigrule}{\ifnum\lasttype=1\hrule\fi}
\makeatother
\begin{document}
aaa
\begin{table}[t]\caption{ccc} xxx\end{table}
bbb
\newpage
aaa
\begin{figure}[t]xxx \caption{kkk}\end{figure}
bbb
\end{document}