我正在使用子表,但似乎由于我添加了上面的表格标题,导致子表引用中的数字错误。我该如何修复此问题?
我非常确定它与软件包有关float
。我对使用这种组合修复此特定问题的快速技巧以及下次可以使用的更好的工具集非常感兴趣,以便完全避免此类问题。
以下是我正在做的事情:
\documentclass[11pt,a4paper]{memoir}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{float}
\newsubfloat{table}
\begin{document}
\begin{table}[H]
\centering
\begin{minipage}{0.9\textwidth}
\caption{Multple tables\label{theTable}}
\begin{minipage}{0.5\textwidth}
\subcaption{A sub table\label{firstSubTable}}
\end{minipage}
\begin{minipage}{0.5\textwidth}
\subcaption{Second sub table\label{secondSubTable}}
\end{minipage}
\end{minipage}
\end{table}
Referencing the table (Table~\ref{theTable}) seems right but in referencing the
sub tables (Table~\ref{firstSubTable} and Table~\ref{secondSubTable}) they get
the wrong table number.
\end{document}
它的外观如下:
答案1
我认为您遇到了错误,应该正确报告。一种解决方法(愚蠢但有效)是在序言末尾添加以下内容:
\makeatletter
\let\X@old@caption\caption
\def\X@caption@minusone{\expandafter\advance\csname c@\@captype\endcsname-1 }
\def\X@caption@br[#1]#2{\X@old@caption[#1]{#2}\X@caption@minusone}
\def\X@caption@nobr#1{\X@old@caption{#1}\X@caption@minusone}
\def\caption{\@ifnextchar[\X@caption@br\X@caption@nobr}
\makeatother
它是如何工作的:最初,\caption
全球将计数器加一。我们使用低级宏\advance
减少本地,这意味着在浮点数内部,它不会被修改,但在外部,它将具有正确的值(您可以通过添加第二个表来检查)。其余部分是需要调整的,因为\caption
有一个可选参数。
答案2
Float 因某些奇怪的原因而混乱\caption
,这似乎可以解决问题
\let\stdcaption\caption
\usepackage{float}
\let\caption\stdcaption
基本上我们memoir
\caption
在加载后恢复float
。正如前面提到的,我认为没有必要使用该float
包
答案3
我不知道我是否理解了这个问题。你不能不用这个包就这么做吗float
?如果你简单地注释掉这个float
包,它就可以工作。
\documentclass[11pt,a4paper]{memoir}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
% \usepackage{float}
\newsubfloat{table}
\begin{document}
\begin{table}[htp]
\caption{Multple tables\label{theTable}}
\begin{minipage}{.4\textwidth}
\centering
Table 1
\subcaption{A sub table\label{firstSubTable}}
\end{minipage}
\hfill
\begin{minipage}{.4\textwidth}
\centering
Table 2
\subcaption{Second sub table\label{secondSubTable}}
\end{minipage}
\end{table}
Referencing the table (Table~\ref{theTable}) seems right but in referencing the
sub tables (Table~\ref{firstSubTable} and Table~\ref{secondSubTable}) they get
the wrong right number.
\end{document}