我知道 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}
在主要环境之前发出一种解决方法。\caption
subfigure
tabularx
更新2013/01/09(来自Axel Sommerfeldt):
该软件包的 3.3 版(现已推出)caption
具有不同的计数器处理方式,因此计数器现在既不会在本地更改,也不会暂时减少。这有望解决所有与错误图形或表格计数器有关的问题,因此更新软件包caption
应该会有所帮助。