scrartcl
使用和时,我遇到了一种奇怪的行为subcaption
。特别是,使用默认选项 时,每个表的编号都会加倍captions=tableheading
。这是一张带有 的图像(代码在最后)captions=tablesignature
,请注意,如果标题位于表格下方,计数器只会增加一(我并不是在这里暗示任何因果关系):
这是我切换到时的输出captions=tableheading
:
我查看了 和 的手册KOMA-Script
,caption
但subcaption
没有发现任何暗示这种行为的内容。这是一个功能吗?如果能提供任何关于为什么会发生这种情况的提示,我将不胜感激。
来源如下
% 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
包知道内容遵循\caption
since\captionabove
被使用。)
但是为什么使用类时输出结果与预期一致article
呢?事实并非如此,如果您使用article
类并使用caption
选项加载包,您将获得相同的行为。我的错,我将在下一版文档中添加一个关于选项与计数器tableposition=b
关系的部分。position
figure
table
为什么如果captions=tableheading
使用“no bug”呢?好吧,这对我来说似乎是一个真正的错误,因为这里的“表 2:表二”应该是“表 3:表二”,我需要检查一下……