我有两个表格,它们约占页面高度的 40%。 这两个表格是相关的,应该保留在同一页面上。 因此,我将这两个表格放在一个迷你页面中,并使其浮动。
\documentclass{tufte-book}
\usepackage{booktabs,tabularx,cleveref,lipsum}
\usepackage{capt-of}
%% get fullwidth length
\makeatletter
\newlength{\fullwidthlength}
\AtBeginDocument{\setlength{\fullwidthlength}{\@tufte@fullwidth}}
\makeatother
%% custom floating environment
% this puts the minipage on a separate page
\usepackage{float}
\newfloat{floatingminipage}{p}{fm}[section]
\begin{document}
\begin{floatingminipage}
\begin{minipage}{\fullwidthlength}\centering
\begin{tabularx}{.95\linewidth}{XX}
\toprule
1 & 2 \\
\bottomrule
\end{tabularx}
\captionof{table}{Lorem ipsum dolor sit amet, consectetur adipiscing elit.}
\label{tbl:one}
\vspace*{2cm}
\begin{tabularx}{.95\linewidth}{XX}
\toprule
1 & 2 \\
\bottomrule
\end{tabularx}
\captionof{table}{Cras sodales pharetra ultrices. Morbi suscipit malesuada neque sit amet laoreet. See \cref{tbl:one}}
\label{tbl:two}
\end{minipage}
\end{floatingminipage}
\end{document}
唯一的问题是我无法让标题\marginparwidth
位于表格正下方的空白处。我尝试了以下方法
\usepackage{xparse}
\let\latexCaptionOf\captionof
% arguments:
% #1 short caption
% #2 offset
% #3 figure type (table, figure)
% #4 caption text
\RenewDocumentCommand{\captionof}{o O{0mm} m m}{%
\begin{minipage}[b]{\linewidth}\par\hfill\raisebox{#2}[\height]{%
\begin{minipage}[b]{\marginparwidth}%
\IfValueTF{#1}{\latexCaptionOf{#3}[#1]{#4}}%
{\latexCaptionOf{#3}{#4}}%
\end{minipage}}%
\end{minipage}%
}%
但标签不再得到解析,只是显示??
。
我不知道我的方法是否合理,如果有更好的解决方案,欢迎提出。我只需要将这两个表放在同一个浮动页面上,这样标签就可以解析了。