插入子浮点数的 tabularray:为什么计数器“子图”不从“1”(或“a”)开始

插入子浮点数的 tabularray:为什么计数器“子图”不从“1”(或“a”)开始

考虑以下 MWE:

\documentclass{article}
\usepackage[export]{adjustbox}
\usepackage{rotating, makecell}
\usepackage{tabularray}
\usepackage[skip=0.5ex, belowskip=1ex]{subcaption}
\renewcommand*{\thesubfigure}{\arabic{subfigure}}

\begin{document}
    \begin{figure}
\settowidth\rotheadsize{3em}                % from makecell
\adjustboxset{width=\linewidth, valign=c}   % from adjustbox
\begin{tblr}{%hlines, vlines,
            colspec={r X[c,h]X[c,h]X[c,h]X[c,h]},
            colsep=3pt,
            column{1}={cmd=\rotcell, font=\bfseries},
            row{1}={font=\bfseries},
            }
    & A & B & C & D \\[-2ex]
one
    & \subfloat[\label{fig5a1}]{\adjincludegraphics{example-image-duck}}
        & \subfloat[\label{fig5b1}]{\adjincludegraphics{example-image-duck}}
            & \subfloat[\label{fig5c1}]{\adjincludegraphics{example-image-duck}}
                & \subfloat[\label{fig5d1}]{\adjincludegraphics{example-image-duck}} \\
two
    & \subfloat[\label{fig5a2}]{\adjincludegraphics{example-image-duck}}
        & \subfloat[\label{fig5b2}]{\adjincludegraphics{example-image-duck}}
            & \subfloat[\label{fig5c2}]{\adjincludegraphics{example-image-duck}}
                & \subfloat[\label{fig5d2}]{\adjincludegraphics{example-image-duck}} \\
\end{tblr}
    \end{figure}
\end{document}

subfloat为什么字幕的编号从41开始?即使我在编译前删除了文件.aux.log,结果还是一样。

在此处输入图片描述

如果我用tabularx表格(查看答案),标题编号正确。所以我想知道,tabularray设置中是否遗漏了某些内容,或者它以意想不到的方式与之交互subcaptionsubfig相同)?

在编译中我使用tabularray2021N 版本(暂时可用github 参见链接 2021N) 将于 9 月 1 日上映。

答案1

于 2021-09-10 更新:我已将counter库添加到tabularray到包中,以便在需要时重置 LaTeX 计数器。这个错误应该已经修复。您可以从下载最新的包文件 https://github.com/lvjr/tabularray/raw/main/tabularray.sty 并测试是否还存在其他问题。

\documentclass{article}
\usepackage[export]{adjustbox}
\usepackage{rotating, makecell}
\usepackage{tabularray}
\UseTblrLibrary{counter}
\usepackage[skip=0.5ex, belowskip=1ex]{subcaption}
\renewcommand*{\thesubfigure}{\arabic{subfigure}}

\begin{document}
    \begin{figure}
\settowidth\rotheadsize{3em}                % from makecell
\adjustboxset{width=\linewidth, valign=c}   % from adjustbox
\begin{tblr}{%hlines, vlines,
            colspec={r X[c,h]X[c,h]X[c,h]X[c,h]},
            colsep=3pt,
            column{1}={cmd=\rotcell, font=\bfseries},
            row{1}={font=\bfseries},
            }
    & A & B & C & D \\[-2ex]
one
    & \subfloat[\label{fig5a1}]{\adjincludegraphics{example-image-duck}}
        & \subfloat[\label{fig5b1}]{\adjincludegraphics{example-image-duck}}
            & \subfloat[\label{fig5c1}]{\adjincludegraphics{example-image-duck}}
                & \subfloat[\label{fig5d1}]{\adjincludegraphics{example-image-duck}} \\
two
    & \subfloat[\label{fig5a2}]{\adjincludegraphics{example-image-duck}}
        & \subfloat[\label{fig5b2}]{\adjincludegraphics{example-image-duck}}
            & \subfloat[\label{fig5c2}]{\adjincludegraphics{example-image-duck}}
                & \subfloat[\label{fig5d2}]{\adjincludegraphics{example-image-duck}} \\
\end{tblr}
    \end{figure}
\end{document}

在此处输入图片描述


这是一个最近才发现的错误(参见https://github.com/lvjr/tabularray/discussions/83)。

为了构建一个漂亮的表格,tabularray需要对每个单元格进行多次测量,因此单元格内的计数器将增加多次。

正如 David Carlisle 在那里评论的那样,tabularx有一些代码可以保存所有 LaTeX 计数器的值并在每次试验时重置它们。因此计数器tabularx是正确的。

我需要一些时间来研究这个问题。而且对于版本来说已经太晚了2021N。解决这个问题后我会更新这个答案。

相关内容