为什么“ftcap”和“caption”产生不同的垂直间距?

为什么“ftcap”和“caption”产生不同的垂直间距?

我通常会加载caption包来修复类中表格和其标题之间的间距article。由于我不使用caption包的任何其他功能,我决定尝试使用专用包ftcap来修复它。但是,当我尝试每个包时,我在页面上得到的垂直空间量略有不同。使用以下 MWE,当我使用时ftcap,与使用时的输出相比,所有文本在页面上略微向上移动caption。据我所知,表格和标题之间的空间在两者之间是相同的(大概是 10.0pt)。

梅威瑟:

\documentclass{article}

\usepackage{caption}  % a bit less than 1mm lower
%\usepackage{ftcap}  % a bit less than 1mm higher

\begin{document}
    
This is a paragraph.

\begin{table}
    \caption{This is a caption.}
    \begin{tabular}{c}
        This is a table.
    \end{tabular}
\end{table}

\end{document}

可以使用以下代码来更清楚地看到差异:

\documentclass{article}

\usepackage{fgruler}
\textwidth=\paperwidth
\oddsidemargin=-1in
\parindent=0pt

\usepackage{caption}  % a bit less than 1mm lower
%\usepackage{ftcap}  % a bit less than 1mm higher

\begin{document}
    
\rule{2cm}{0.1pt}
This is a paragraph.

\begin{table}
    \caption{This is a caption.}
    \begin{tabular}{c}
        \rule{2cm}{0.1pt}
        This is a table.
    \end{tabular}
\end{table}

\end{document}

我尝试过查看这两个包的文档和实现,但caption它相当复杂,所以我无法理解它。

答案1

caption和的实现ftcap不同。

据我所知,差异是由于caption在标题中添加了支柱而引起的,而这并不是通过ftcap修改\caption命令来实现的。

让我们做三个例子。顶部细线由showframe几何选项添加,显示字块的顶部边缘。

ftcap没有\strut

\documentclass{article}
\usepackage[pass,showframe]{geometry}

\usepackage{ftcap}  % a bit less than 1mm higher

\begin{document}

\begin{table}[htp]
\centering
    \caption{This is a caption.}
Something
\end{table}

\end{document}

在此处输入图片描述

ftcap\strut

\documentclass{article}
\usepackage[pass,showframe]{geometry}

\usepackage{ftcap}  % a bit less than 1mm higher

\begin{document}

\begin{table}[htp]
\centering
    \caption{\strut This is a caption.}
Something
\end{table}

\end{document}

在此处输入图片描述

caption

\documentclass{article}
\usepackage[pass,showframe]{geometry}

\usepackage{caption}  % a bit less than 1mm lower

\begin{document}

\begin{table}[htp]
\centering
    \caption{This is a caption.}
Something
\end{table}

\end{document}

在此处输入图片描述

标题和文本之间的间距也有细微的差别。

结论

无论使用哪种包,您都不能指望不同的实现(特别是像caption's 这样的复杂实现)产生相同的输出。

相关内容