subcaption 和 tabularx 不兼容吗?

subcaption 和 tabularx 不兼容吗?

我知道 tex.sx 不是用于报告错误的论坛,但我遇到了一点问题,正在寻找技术解决方法。以下 MWE 产生了奇怪的标签:

\documentclass{article}

\usepackage{subcaption}
\usepackage{tabularx}

\begin{document}
\begin{figure*}
  \begin{subfigure}{0.3\textwidth}
    Figure 1a
    \caption{Fig1a}
    \label{fig:1a}
  \end{subfigure}
  \hfill
  \begin{subfigure}{0.5\textwidth}
\begin{tabularx}{0.5\textwidth}{r}
Figure 1b
\end{tabularx}
    \caption{Fig1b}
    \label{fig:1b}
  \end{subfigure}
  \caption{Fig1}
  \label{fig:1}
\end{figure*}
\begin{figure}
Figure 2
\caption{Fig2 caption}
\label{fig:2}
\end{figure}
Figures \ref{fig:1a}, \ref{fig:1b}, and \ref{fig:1} should be 1a, 1b
and 1; Figure \ref{fig:2} should be 2.
\end{document}

具体来说,最后一行文字写道:“图 1a、1b 和2应为 1a、1b 和1; 数字3应该2。”(我知道这个例子没有使用的任何tabularx功能;仅仅使用tabularx环境就足以抛弃标签。)如果我将移动到\caption{Fig1}\label{fig:1}子图上方,那么我会得到正确的编号,但当然标题现在处于错误的位置。

\listfiles我使用

 article.cls    2007/10/19 v1.4h 
  size10.clo    2007/10/19 v1.4h 
subcaption.sty    2011/10/30 v1.1c 
 caption.sty    2011/11/10 v3.2e 
caption3.sty    2011/11/01 v1.4a 
  keyval.sty    1999/03/16 v1.13 
tabularx.sty    1999/01/07 v2.07 
   array.sty    2008/09/09 v2.4c 

所以我的问题是,什么行为tabularx没有正确尊重标签计数器,我自己又怎么能推断出这一点呢?

答案1

问题在于计数器的subfigure步骤figure,以便正确地为其\label内部的命令分配含义。然而它只在本地执行此操作,以便主\caption命令分配正确的图形编号。

然而,工作的一部分tabularx就是为了存钱全球所有计数器的值(这是因为它处理两次其内容并且计数器需要恢复到其先前的值)

在包含的环境之后,似乎\addtocounter{figure}{-1}在主要环境之前发出一种解决方法。\captionsubfiguretabularx

更新2013/01/09(来自Axel Sommerfeldt):

该软件包的 3.3 版(现已推出)caption具有不同的计数器处理方式,因此计数器现在既不会在本地更改,也不会暂时减少。这有望解决所有与错误图形或表格计数器有关的问题,因此更新软件包caption应该会有所帮助。

相关内容