如果表包含 ltxtable,则 fancylabel 不会增加计数器

如果表包含 ltxtable,则 fancylabel 不会增加计数器

我在用着ltxtable使用灵活的宽度,tabularxX长表中的列。我还使用chemschemex/fancylabel包给我的化学结构提供甜蜜的自动编号。

但是,如果我包含一个包含\fancylabel[<family>]{label}命令的表格通过\LTXtable{<width>}{<file>}方法中 fancylabels 的计数器不会递增。因此,所有标签最终都具有相同的数字。

LTXTable 方法的编号不正确。

直接在文档中包含相同的表格,只是X将列替换为列,或者l通过命令\input{}给出了正确的顺序编号。

直接包含或使用正确编号的 <code>\input</code> 方法。

任何包含方法都不会影响整个文档的编号,只会影响表格的编号。表格还会识别之前已编号的结构并为其分配正确的编号,但对于下一个结构,计数器却无法更改。

主体

\documentclass[a4paper]{article}
\usepackage{graphicx}
\usepackage{siunitx}
\usepackage{chemmacros}
  \chemsetup{modules = nomenclature}

\let\etoolboxforlistloop\forlistloop % save the good meaning of \forlistloop
\usepackage{chemschemex}
\let\forlistloop\etoolboxforlistloop % restore the good meaning of \forlistloop

\usepackage{threeparttable}
\usepackage{threeparttablex}
\usepackage{longtable}
\usepackage{tabularx}
\usepackage{ltxtable}
\usepackage{collcell}
\usepackage{afterpage}

\begin{filecontents}{table.tex}
  \begin{ThreePartTable}
    \begin{TableNotes}
      \item [a] A note.
    \end{TableNotes}
    \begin{longtable}[c]{%
      @{}%
      >{\bfseries}l<{}%
      >{\collectcell\iupac}X<{\endcollectcell}% This is the column with the tabularx `X` column when using ltxtable
      S%
      @{}%
    }
      \caption{Caption!}\\
      \multicolumn{2}{@{}l}{\textbf{Molecule}} & {\pKa}\\
      \endfirsthead

      \insertTableNotes
      \endlastfoot

      \multicolumn{2}{@{}l}{\emph{Pyridines}}                             \\
      \fancylabel[CSX]{pyr}      &  pyridine            &  5.23           \\
      \fancylabel[CSX]{2me-pyr}  &  2-methylpyridine    &  5.97           \\
      \multicolumn{2}{@{}l}{\emph{Diazines}}                              \\
      \fancylabel[CSX]{pdz}      &  pyridazine          &  2.24\tnote{a}  \\
      \multicolumn{2}{@{}l}{\emph{Phenols}}                               \\
      \fancylabel[CSX]{phe}      &  phenol              &  9.99           \\
      \fancylabel[CSX]{23me-phe} &  2,3-dimethylphenol  &  10.50          \\
    \end{longtable}
  \end{ThreePartTable}
\end{filecontents}

\begin{document}
This is a label: \fancylabel[CSX]{phe}\\
This is an image using chemschemex: \struct[text]{pyr}\\
This is the referenced number for pyridine: \structref{pyr}\\

% No sweet automatic numbering, but at least I get `X` columns.

\afterpage{\clearpage%
    \LTXtable{\linewidth}{table.tex}
}


% Sweet sweet automatic numbering, but no lovely `X` columns.

% \afterpage{\clearpage%
%   \begin{ThreePartTable}
%     \begin{TableNotes}
%       \item [a] A note.
%     \end{TableNotes}
%     \begin{longtable}[c]{%
%       @{}%
%       >{\bfseries}l<{}%
%       >{\collectcell\iupac}l<{\endcollectcell}% This is the column with the tabularx `X` column when using ltxtable
%       S%
%       @{}%
%     }
%       \caption{Caption!}\\
%       \multicolumn{2}{@{}l}{\textbf{Molecule}} & {\pKa}\\
%       \endfirsthead
%
%       \insertTableNotes
%       \endlastfoot
%
%       \multicolumn{2}{@{}l}{\emph{Pyridines}}                             \\
%       \fancylabel[CSX]{pyr}      &  pyridine            &  5.23           \\
%       \fancylabel[CSX]{2me-pyr}  &  2-methylpyridine    &  5.97           \\
%       \multicolumn{2}{@{}l}{\emph{Diazines}}                              \\
%       \fancylabel[CSX]{pdz}      &  pyridazine          &  2.24\tnote{a}  \\
%       \multicolumn{2}{@{}l}{\emph{Phenols}}                               \\
%       \fancylabel[CSX]{phe}      &  phenol              &  9.99           \\
%       \fancylabel[CSX]{23me-phe} &  2,3-dimethylphenol  &  10.50          \\
%     \end{longtable}
%   \end{ThreePartTable}
% }

\end{document}

理想情况下,我希望保留化合物的自动编号功能。有几个……如果我必须删除某个功能才能使其工作,那就是列X。我将X用一p{}列替换一列。我可以通过初步运行来确定 p 列的宽度,其中我使用命令包含表格\LTXtable{<width>}{<file>},从 thw 文件中获取宽度.aux,然后只需使用\input命令即可。我只是不想为可能包含许多表格的大型文档手动执行此操作。

在旁边
etoolbox我知道和etextools(以及autonum和) 之间的冲突fancylabel,并已实施修复这里。虽然 MWE 不包括biblatex我的完整文档,但我已经测试了修复前后的 MWE,结果并无差别。

相关内容