Floatrow 包与居中 longtable 冲突

Floatrow 包与居中 longtable 冲突

考虑下面的 MWE。如果我\usepackage{floatrow}注释掉,表格longtable就不会水平居中。如果我注释掉,\usepackage{floatrow}表格就会正确水平居中。

我怎样才能让这个代码片段工作(同时使用floatrow和 居中longtable)?

致谢:景观建设(我为 MWE 简化了):Steven B. Segletes 在此回答。

以下 MWE 中没有 usepackage floatrow (正确):

在此处输入图片描述

在 MWE 下方使用 usepackage floatrow (不再居中):

在此处输入图片描述

梅威瑟:

\documentclass{article}
\usepackage{booktabs}
\usepackage{longtable}
\usepackage{pdflscape}
\usepackage{afterpage}
\usepackage{setspace}
\usepackage[a4paper]{geometry}
% >> 'PROBLEM' package
\usepackage{floatrow}
% << 'PROBLEM' package
\begin{document}
Document is portrait
\afterpage{%
    \clearpage% Flush earlier floats (otherwise order might not be correct)
        \newgeometry{left=1cm, right=1cm,top=1cm,bottom=1cm}
    \begin{landscape}% Landscape page
        \pagestyle{empty}
        \centering % Center table
        \vspace{0pt}
        \begin{singlespacing}
\begin{longtable}{rr}
 \caption{Table is landscape.}
 \tabularnewline
 \textbf{Col1} & \textbf{Col2}\tabularnewline
 \midrule
 \endfirsthead
 \caption{Caption (Continued)}\tabularnewline
 \textbf{Col1} & \textbf{Col2}\tabularnewline
\midrule
 \endhead
 \bottomrule
 \multicolumn{2}{r}{Cont}
 \endfoot
 \bottomrule
 \endlastfoot
 A & B \tabularnewline
 C & D \tabularnewline
\end{longtable}
    \end{singlespacing}
    \end{landscape}
    \clearpage% Flush page
}
\restoregeometry
\end{document}

答案1

由于某些奇怪的原因floatrow设置\LTleft\LTright0pt 破坏了 longtable 的默认定位,你可以将它们设置回去,或者更简单地使用

\begin{longtable}[c]{rr}

强制长桌居中。


floatrow手册里提到过这一点

longtable 的对齐设置。floatrow 将一些表格布局设置扩展到 longtable 环境,因此您可以在 \DeclareMarginSet 设置中设置 \LTleft 和 \LTright 参数。例如,居中选项定义如下: \DeclareMarginSet{centering}{\setfloatmargins{\hfill}{\hfill}% \LTleft=\fill \LTright=\fill}

答案2

这可能是解决方案:


header-includes:
 - \usepackage{floatrow}
 - \floatsetup[longtable]{margins=centering}

更新

包“float”与 kable 和 kableExtra 一起使用。

当我们需要将图形的标题放在顶部时,我发现的唯一解决方案是使用“floatrow”包。

由于“float”和“floatrow”不兼容,因此需要在“floatrow”中添加一些额外的配置,以便使用 rstudio、rmarkdown 和 knitr 通过 kable 和 kableExtra 生成的表格外观相同。


header-includes:
 - \usepackage{floatrow}
 - \floatsetup[figure]{capposition=top} % Caption figure top.
 - \floatsetup[table]{capposition=top} % Caption table top.
 - \floatplacement{figure}{H} % Figure position according to the code flow.
 - \floatplacement{table}{H} % Table position according to the code flow.
 - \floatsetup[longtable]{margins=centering} % Longtable tables centered.

相关内容