我在用着ltxtable
使用灵活的宽度,tabularx
,X
长表中的列。我还使用chemschemex
/fancylabel
包给我的化学结构提供甜蜜的自动编号。
但是,如果我包含一个包含\fancylabel[<family>]{label}
命令的表格通过该\LTXtable{<width>}{<file>}
方法中 fancylabels 的计数器不会递增。因此,所有标签最终都具有相同的数字。
直接在文档中包含相同的表格,只是X
将列替换为列,或者l
通过命令\input{}
给出了正确的顺序编号。
任何包含方法都不会影响整个文档的编号,只会影响表格的编号。表格还会识别之前已编号的结构并为其分配正确的编号,但对于下一个结构,计数器却无法更改。
\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,结果并无差别。