KOMA-Script 和副标题:错误计数

KOMA-Script 和副标题:错误计数

scrartcl使用和时,我遇到了一种奇怪的行为subcaption。特别是,使用默认选项 时,每个表的编号都会加倍captions=tableheading。这是一张带有 的图像(代码在最后)captions=tablesignature,请注意,如果标题位于表格下方,计数器只会增加一(我并不是在这里暗示任何因果关系): KOMA-Script、subcation 和 captions=tablesignature

这是我切换到时的输出captions=tableheadingKOMA-Script、子标题和标题=tableheading

我查看了 和 的手册KOMA-Scriptcaptionsubcaption没有发现任何暗示这种行为的内容。这是一个功能吗?如果能提供任何关于为什么会发生这种情况的提示,我将不胜感激。

来源如下

% bug(?), default setting for captions
\documentclass[captions=tablesignature]{scrartcl} %% same with scrreprt
% \documentclass[captions=tableheading]{scrartcl} % no bug
\usepackage{subcaption}
\setkomafont{caption}{\LARGE}
\begin{document}
\begin{table}
\caption{table one\label{tab:ind}}
\begin{subtable}[t]{.45\linewidth}
\caption{expenses}
\centering
\begin{tabular}{llr}
\hline
& Konto & \textsc{dkk}\\
\hline
& gnus & 3000\\
\hline
\textsc{(i)} & gnash & 146000\\
\hline
\end{tabular}
\end{subtable}
\qquad
\begin{subtable}[t]{.45\linewidth}
\caption{income}
\centering
\begin{tabular}{llr}
\hline
& Konto & \textsc{dkk}\\
\hline
& gnog & 100000\\
\hline
\textsc{(ii)} & gnus & 100000\\
\hline
\end{tabular}
\end{subtable}
\end{table}

\begin{table}
%% \caption{table two\label{tab:ind2}}
\begin{subtable}[t]{.45\linewidth}
\caption{expenses}
\centering
\begin{tabular}{llr}
\hline
& Konto & \textsc{dkk}\\
\hline
& gnus & 3000\\
\hline
\textsc{(i)} & gnash & 146000\\
\hline
\end{tabular}
\end{subtable}
\qquad
\begin{subtable}[t]{.45\linewidth}
\caption{income}
\centering
\begin{tabular}{llr}
\hline
& Konto & \textsc{dkk}\\
\hline
& gnog & 100000\\
\hline
\textsc{(ii)} & gnus & 100000\\
\hline
\end{tabular}
\end{subtable}
%% could also use \captionbelow
\caption{table two\label{tab:ind2}}
\end{table}

\begin{table}
\caption{table three}
\begin{subtable}[t]{.45\linewidth}
\caption{expenses}
\centering
\begin{tabular}{llr}
\hline
& Konto & \textsc{dkk}\\
\hline
& gnog & 370000\\
\hline
\textsc{(iii)} & gug & 552000\\
\hline
\end{tabular}
\end{subtable}
\qquad
\begin{subtable}[t]{.45\linewidth}
\caption{income\label{tab:ind3}}
\begin{tabular}{llr}
\hline
& Konto & \textsc{dkk}\\
\hline
& gmag & 100000\\
& glog & 218000\\
\hline
\textsc{(iv)} & gnus & 318000\\
\hline
\end{tabular}
\end{subtable}
\end{table}
\end{document}

答案1

这不是一个错误,在我看来,这种行为是正确的。由于table可以包含多个\caption,因此caption包使用诸如 之类的提示captions=tablesignature来确定必须增加表计数器的位置。

因此当你使用如下代码时

\documentclass[captions=tablesignature]{scrartcl}
...
\begin{table}
% Table 1:
\caption{table one\label{tab:ind}}
% Table 2:
\begin{subtable}[t]{.45\linewidth}
\caption{expenses}
...
\end{subtable}
\qquad
\begin{subtable}[t]{.45\linewidth}
\caption{income}
...
\end{subtable}
\end{table}

caption在此处看到两个表:标题为“表一”的表紧随其后\caption(没有内容,但caption包不知道这一点!),因为captions=tablesignature指定了。之后是第二个表(没有标题)。table由于子表的存在,第二个表的计数器将递增。(\ref因此,第一个子表的 A 将导致“2a”。)

如果您确实想要一个顶部标题,即使captions=tablesignature设置了,您也必须给caption包一个提示,例如使用\captionabove而不是\caption

\documentclass[captions=tablesignature]{scrartcl}
...
\begin{table}
% Table 1:
\captionabove{table one\label{tab:ind}}
\begin{subtable}[t]{.45\linewidth}
\caption{expenses}
...
\end{subtable}
\qquad
\begin{subtable}[t]{.45\linewidth}
\caption{income}
...
\end{subtable}
\end{table}

\ref这里的 A 到第一个子表将导致“1a”,因为caption包知道内容遵循\captionsince\captionabove被使用。)

但是为什么使用类时输出结果与预期一致article呢?事实并非如此,如果您使用article类并使用caption选项加载包,您将获得相同的行为。我的错,我将在下一版文档中添加一个关于选项与计数器tableposition=b关系的部分。positionfiguretable

为什么如果captions=tableheading使用“no bug”呢?好吧,这对我来说似乎是一个真正的错误,因为这里的“表 2:表二”应该是“表 3:表二”,我需要检查一下……

相关内容