如何修复 tabularray 包中的 tblr 和 talltblr 环境中的标题间距?

如何修复 tabularray 包中的 tblr 和 talltblr 环境中的标题间距?

在 tblr 和 talltblr 环境中,文本和表格图例之间的间距不同。在 MWE 中可以观察到这种差异。

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{tabularray}
\usepackage{blindtext}
\begin{document}
\blindtext a little more text\par%
%
\begin{table}[h]
\centering
\caption{Caption 1}%
\label{TAB1}%
\begin{tblr}{colspec={%
X[c,m]%
X[c,m]%
X[c,m]%
}}%
\hline
\textbf{Column 1} &
\textbf{Column 1} &
\textbf{Column 1} \\%
\hline
416,09 & 176,20 & 56,00 \\
416,09 & 194,30 & 56,00 \\
416,09 & 336,10 & 56,00 \\
\hline
\end{tblr}
\end{table}%
%\newpage
\blindtext a little more text\par%
%
\begin{table}[h]
\centering
\begin{talltblr}[%
caption={Caption 2},
label={TAB2},
remark{a}={text}
]{%
colspec={%
X[c,m]%
X[c,m]%
X[c,m]%
},
rowhead=1}%
\hline
\textbf{Column 1} &
\textbf{Column 1} &
\textbf{Column 1} \\%
\hline
416,09 & 176,20 & 56,00 \\
416,09 & 194,30 & 56,00 \\
416,09 & 336,10 & 56,00 \\
\hline
\end{talltblr}
\end{table}
\end{document}

在此处输入图片描述

答案1

不但上方的空间不同,就连下方的空间也不同。

表1的标题为普通标题。表2的标题由 创建tabularray

您可以使用caption包来自定义表 1 的标题:

\documentclass[12pt,a4paper]{article}
%\usepackage[utf8]{inputenc}% no more needed in up-to-date distributions
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{caption}
\captionsetup[table]{
  position=above, aboveskip=4pt,
  belowskip=-2pt
  }
\usepackage{tabularray}
\usepackage{blindtext}
\begin{document}
\blindtext a little more text\par%
%
\begin{table}[h]
\centering%
\caption{Caption 1}%
\label{TAB1}%
\begin{tblr}{colspec={%
X[c,m]%
X[c,m]%
X[c,m]%
}}%
\hline
\textbf{Column 1} &
\textbf{Column 1} &
\textbf{Column 1} \\%
\hline
416,09 & 176,20 & 56,00 \\
416,09 & 194,30 & 56,00 \\
416,09 & 336,10 & 56,00 \\
\hline
\end{tblr}
\end{table}%
%\newpage
\blindtext a little more text\par%
%
\begin{table}[h]
\centering
\begin{talltblr}[%
caption={Caption 2},
label={TAB2},
remark{a}={text}
]{%
colspec={%
X[c,m]%
X[c,m]%
X[c,m]%
},
rowhead=1}%
\hline
\textbf{Column 1} &
\textbf{Column 1} &
\textbf{Column 1} \\%
\hline
416,09 & 176,20 & 56,00 \\
416,09 & 194,30 & 56,00 \\
416,09 & 336,10 & 56,00 \\
\hline
\end{talltblr}
\end{table}
\end{document}

在此处输入图片描述

编辑:
如果您想做相反的事情(即自定义创建的标题tabularray,使其看起来像普通标题)使用presepheadseplongtblr环境一起使用:

\documentclass[12pt,a4paper]{article}
%\usepackage[utf8]{inputenc}% no more needed in up-to-date distributionsè-
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{tabularray}
\usepackage{blindtext}
\begin{document}
    \blindtext a little more text\par%
    %
    \begin{table}[h]
        \centering
        \caption{Caption 1}%
        \label{TAB1}%
        \begin{tblr}{colspec={%
                    X[c,m]%
                    X[c,m]%
                    X[c,m]%
            }}%
            \hline
            \textbf{Column 1} &
            \textbf{Column 1} &
            \textbf{Column 1} \\%
            \hline
            416,09 & 176,20 & 56,00 \\
            416,09 & 194,30 & 56,00 \\
            416,09 & 336,10 & 56,00 \\
            \hline
        \end{tblr}
    \end{table}%
    %\newpage
    \blindtext a little more text\par%
    %
    \begin{table}[h]
        \centering
        \begin{longtblr}[%
            presep=10pt,%vertical space between table head and the above text
            caption={Caption 2},
            label={TAB2},
            headsep=1pt,%vertical space between table head and table body
            remark{a}={text}
            ]{%
                colspec={%
                    X[c,m]%
                    X[c,m]%
                    X[c,m]%
                },
                rowhead=1}%
            \hline
            \textbf{Column 1} &
            \textbf{Column 1} &
            \textbf{Column 1} \\%
            \hline
            416,09 & 176,20 & 56,00 \\
            416,09 & 194,30 & 56,00 \\
            416,09 & 336,10 & 56,00 \\
            \hline
        \end{longtblr}
    \end{table}
\end{document}

在此处输入图片描述

答案2

我想提出一个更先进的解决方案,包括字幕间距调整和字幕格式定制。

简而言之,目标是:

  • 标题、表格主体和相邻段落文本之间的间距相同;
  • 相同的字幕格式(即字幕行的顺序和内容);
  • 透明的 LoT 控制。

还有挑战属于:

  • 不同类型的表格(例如tblrtalltblr);
  • 使用几个影响相同文档结构的不同软件包(例如tabularraycaption都可以向 LoT 添加物品);
  • 不同的包有不同的方式指定字幕格式参数。

数学家协会

为了说明我的解决方案,我准备了一个 MWE。它如下:

\documentclass{article}

\usepackage[a5paper]{geometry}                  % a5 paper
\usepackage[utf8]{inputenc}                     % input encoding
\usepackage[english]{babel}                     % localization
\usepackage{caption}                            % caption control
\usepackage{tabularray}                         % tabularray package
\usepackage[unicode=true,                       % unicode encoded pdf strings
            colorlinks=true,                    % use colored links
            linkcolor=black,                    % color of links
           ]{hyperref}

\captionsetup[table]
             {labelsep=period,                  % caption separation for tables
              position=t,                       % caption position for tables
              justification=raggedright,        % caption alignment for tables
              singlelinecheck=off,              % don't center single line table captions
              aboveskip=2em}                    % above skip for table captions


\ExplSyntaxOn
% Tabularray theme using \captionof macro
\NewTblrTheme { captionof }
  {
    \DefTblrTemplate { caption } { default }
      {
        \addtocounter { table } { -1 }
        \tl_if_empty:NTF \lTblrEntryTl
          {
            \captionof { table }
              { \InsertTblrText { caption } }
          }
          {
            \captionof { table }
              [ \InsertTblrText { entry } ]
              { \InsertTblrText { caption } }
          }
        \vspace{ -\abovecaptionskip }
      }
    \SetTblrTemplate { caption-lot } { empty }
  }
\ExplSyntaxOff


\begin{document}

\pagestyle{empty}

\noindent
\textcolor{red}{\rule{\textwidth}{2pt}}

\textcolor{red}{Paragraph text.}

\begin{table}[!h]
 \begin{talltblr}
       [theme = captionof,
        headsep = \abovecaptionskip,
        caption = {Simple floating three part table (\texttt{captionof} theme)},
        entry = {Floating \texttt{talltblr} with \texttt{captionof} theme},
        label = {tab:table-simple-captionof},
        note{1} = {The first note text. And a long line of dummy text.},
        note{2} = {The second note text. And a long line of dummy text.}]
       {colspec = {ccc},
        row{1} = {font=\bfseries},
        hline{1,2,Z} = {1pt},
        vline{2-Y} = {1pt}}
  Head:A    & Head:B    & Head:C    \\
  A1        & B1        & C1        \\
  A2        & B2        & C2        \\
  A3        & B3        & C3        \\
 \end{talltblr}
\end{table}

\textcolor{red}{Paragraph text.}

\listoftables

\end{document}

首先,让标题向右对齐(左对齐,无连字符),并由以下元素组成:

  • 本地化规则定义的对象类型(目前是“Table”字);
  • 长度空间;
  • 物体编号;
  • 时期;
  • 标题文字。

布局如下:

使用 \captionof 宏的简单示例

水平线显示文本列的整个宽度。表格前的段落和表格后的段落用于显示间距表格与相邻段落之间。下面有一个表格列表并且由单个项目组成,正如它应该的那样。

表格外层规范的前两行选择tblr主题,并设置表格主体与其标题(由环境生成)之间的间距talltblr\abovecaptionskip长度计算如下caption取决于浮点类型的包(目前是table)。浮点周围的间距是默认的(另请参阅回答相应长度)。

这段代码定义了环境captionof的主题talltblr

\NewTblrTheme { captionof }
  {
    \DefTblrTemplate { caption } { default }
      {
        \addtocounter { table } { -1 }
        \tl_if_empty:NTF \lTblrEntryTl
          {
            \captionof { table }
              { \InsertTblrText { caption } }
          }
          {
            \captionof { table }
              [ \InsertTblrText { entry } ]
              { \InsertTblrText { caption } }
          }
        \vspace{ -\abovecaptionskip }
      }
    \SetTblrTemplate { caption-lot } { empty }
  }

一般来说captionof主题由两部分组成(见这个答案):

  • 第一部分是表格模板caption元素的定义;tblr
  • 第二行将caption-lot模板元素设置为empty

需要设置caption-lot为以防止emptytabularray从将项目添加到表格列表中。其他行重载元素default模板caption。标题文本由caption包(使用\captionof宏时)。运行\captionof宏将表计数器增加 1,并在标题段落后添加垂直间距,因此需要在运行前减少表计数器\captionof,并在之后通过插入负间距来删除垂直间距。如果环境entry中的短标题(元素)talltblr未指定(是empty) ,则调用时\captionof不带可选参数,否则entry元素的文本值将作为可选参数传递。原始解决方案没有间距修复:

\ExplSyntaxOn
\prg_generate_conditional_variant:Nnn \tl_if_empty:n { e } { TF }
\let \IfTokenListEmpty = \tl_if_empty:eTF
\ExplSyntaxOff

% modifying the captions of tabularray
\DefTblrTemplate{firsthead}{default}{%
  \addtocounter{table}{-1}%
  \IfTokenListEmpty{\InsertTblrText{entry}}{%
    \captionof{table}{\InsertTblrText{caption}}%
  }{%
    \captionof{table}[\InsertTblrText{entry}]{\InsertTblrText{caption}}%
  }%
}

因此,任务在各个包之间的分配如下:

  • caption包组成标题文字并将项目添加到表格列表中,
  • 对于talltblr环境(按主题设置样式captionoftabularray套餐提供标题间距并传递外部规范参数。

此外,还有类似的解决方案不检查短字幕。

完整示例

为了解释我以上述方式分离任务的动机,我准备了一个例子:

\documentclass{article}

\usepackage[a5paper]{geometry}                  % a5 paper
\usepackage[utf8]{inputenc}                     % input encoding
\usepackage[english]{babel}                     % localization
\usepackage{caption}                            % caption control
\usepackage{indentfirst}                        % first line indent
\usepackage{tabularray}                         % tabularray package
\usepackage[unicode=true,                       % unicode encoded pdf strings
            colorlinks=true,                    % use colored links
            linkcolor=black,                    % color of links
           ]{hyperref}

\captionsetup[table]
             {labelsep=period,                  % caption separation for tables
              position=t,                       % caption position for tables
              justification=raggedright,        % caption alignment for tables
              singlelinecheck=off,              % don't center single line table captions
              aboveskip=2em}                    % above skip for table captions


\UseTblrLibrary{functional}                     % to evaluate \tblrcontents


\newcommand{\normalparindent}{5ex}
\parindent=\normalparindent
\newcommand{\dummytext}{And a long line of dummy text.}
\newcommand{\nfirsttext}{The first note text. \dummytext}
\newcommand{\nsecondtext}{The second note text. \dummytext}
\newcommand{\parbot}{\par\textcolor{red}{Paragraph text.}}
\newcommand{\partop}
           {\clearpage
            \par\noindent\textcolor{red}{\rule{\textwidth}{2pt}}\parbot}


\ExplSyntaxOn
% Contents of the table
\prgNewFunction \tblrcontents {}
{
  \prgReturn
    {
      Head:A    & Head:B    & Head:C    \\
      A1        & B1        & C1        \\
      A2        & B2        & C2        \\
      A3        & B3        & C3        \\
    }
}

% Period separator
\DefTblrTemplate { caption-sep } { mycapsep } { .\enskip }

% My own version of the simple caption template
\DefTblrTemplate { caption } { mysimple }
  {
    \UseTblrAlign { caption }
    \UseTblrIndent { caption }
    \UseTblrHang { caption }
    \leavevmode
    \strut
    \UseTblrTemplate { caption-tag } { default }
    \UseTblrTemplate { caption-sep } { mycapsep }
    \UseTblrTemplate { caption-text } { default }
    \strut
    \par
  }

% My own caption template
\DefTblrTemplate { caption } { mycaption }
  {
    \UseTblrAlign { caption }
    \UseTblrIndent { caption }
    \UseTblrHang { caption }
    \leavevmode
    \makebox [ \linewidth ] [ l ]
      {
        \parbox { \textwidth }
          {
            \raggedright
            \strut
            \UseTblrTemplate { caption-tag } { default }
            \UseTblrTemplate { caption-sep } { mycapsep }
            \UseTblrTemplate { caption-text } { default }
            \strut
          }
      }
  }

% Tabularray theme using mysimple template
\NewTblrTheme { mysimpletheme }
  {
    \SetTblrTemplate { caption } { mysimple }
    \SetTblrStyle { caption } { halign=l }
  }

% Tabularray theme using mycaption template
\NewTblrTheme { mycaptiontheme }
  {
    \SetTblrTemplate { caption } { mycaption }
  }

% Tabularray theme using \captionof macro
\NewTblrTheme { captionof }
  {
    \DefTblrTemplate { caption } { default }
      {
        \addtocounter { table } { -1 }
        \tl_if_empty:NTF \lTblrEntryTl
          {
            \captionof { table }
              { \InsertTblrText { caption } }
          }
          {
            \captionof { table }
              [ \InsertTblrText { entry } ]
              { \InsertTblrText { caption } }
          }
        \vspace{ -\abovecaptionskip }
      }
    \SetTblrTemplate { caption-lot } { empty }
  }
\ExplSyntaxOff


\begin{document}

\pagestyle{empty}

\SetTblrInner[tblr, talltblr]
             {colspec = {ccc},
              row{1} = {font=\bfseries},
              hline{1,2,Z} = {1pt},
              vline{2-Y} = {1pt}}
\SetTblrOuter[tblr, talltblr]
             {evaluate=\tblrcontents}
\SetTblrOuter[talltblr]
             {headsep = \abovecaptionskip,
              note{1} = {\nfirsttext},
              note{2} = {\nsecondtext}}

\partop

\begin{table}[!h]
 \caption{Simple floating table}
 \label{tab:table-simple-floating}
 \begin{tblr}{}
  \tblrcontents
 \end{tblr}
\end{table}

\parbot\partop

\begin{table}[!h]
 \begin{talltblr}
       [caption = {Simple floating three part table (\texttt{default} theme)},
        entry = {Floating \texttt{talltblr} with \texttt{default} theme},
        label = {tab:table-simple-default}]{}
  \tblrcontents
 \end{talltblr}
\end{table}

\parbot\partop

\begin{table}[!h]
 \begin{talltblr}
       [theme = captionof,
        caption = {Simple floating three part table (\texttt{captionof} theme)},
        entry = {Floating \texttt{talltblr} with \texttt{captionof} theme},
        label = {tab:table-simple-captionof}]{}
  \tblrcontents
 \end{talltblr}
\end{table}

\parbot\partop

\begin{table}[!h]
 \begin{talltblr}
       [theme = captionof,
        caption = {Simple floating three part table (\texttt{captionof} theme)},
        label = {tab:table-simple-captionof-longcap}]{}
  \tblrcontents
 \end{talltblr}
\end{table}

\parbot\partop

\begin{table}[!h]
 \begin{talltblr}
       [theme = mysimpletheme,
        caption = {Simple floating three part table (\texttt{mysimpletheme} theme)},
        entry = {Floating \texttt{talltblr} \texttt{mysimpletheme} theme},
        label = {tab:table-simple-simple}]{}
  \tblrcontents
 \end{talltblr}
\end{table}

\parbot\partop

\begin{table}[!h]
 \begin{talltblr}
       [theme = mysimpletheme,
        caption = {Simple floating three part table (\texttt{mysimpletheme} theme)},
        label = {tab:table-simple-simple-longcap}]{}
  \tblrcontents
 \end{talltblr}
\end{table}

\parbot\partop

\begin{table}[!h]
 \begin{talltblr}
       [theme = mycaptiontheme,
        caption = {Simple floating three part table
                   (\texttt{mycaptiontheme} theme with \texttt{simple}-like caption template,
                    \texttt{\char`\\makebox} and \texttt{\char`\\parbox})},
        entry = {Floating \texttt{talltblr} \texttt{mycaptiontheme} theme},
        label = {tab:table-simple-mycaption}]{}
  \tblrcontents
 \end{talltblr}
\end{table}

\parbot

\clearpage
\listoftables

\end{document}

一个非常基本的例子

这是上表简化版本的布局,但是它是用浮点型tblr嵌套环境制作的table

使用嵌套在表格环境中的 tblr 表格的简单浮动表格

展望未来,我想说图上的标题是遍布整个宽度文本的宽度,而不仅仅是表格的宽度。这种行为有时非常必要。

产生此布局的代码部分是:

\partop

\begin{table}[!h]
 \caption{Simple floating table}
 \label{tab:table-simple-floating}
 \begin{tblr}{}
  \tblrcontents
 \end{tblr}
\end{table}

\parbot

\parbot\partop宏用于在表格前和表格后生成一个段落。这些段落用于显示间距浮动表格和相邻段落之间。\partop宏还提供分页符并绘制显示文本列整个宽度的规则。表格内容由宏提供\tblrcontents,该宏以 -style 定义expl3

\prgNewFunction \tblrcontents {}
{
  \prgReturn
    {
      Head:A    & Head:B    & Head:C    \\
      A1        & B1        & C1        \\
      A2        & B2        & C2        \\
      A3        & B3        & C3        \\
    }
}

为了使最后工作,它还需要允许评估宏(见tabularray 手动的,第“外部键评估实际操作”):

\UseTblrLibrary{functional}                     % to evaluate \tblrcontents

\SetTblrOuter[tblr, talltblr]
             {evaluate=\tblrcontents}

视觉风格所有表格均由以下几行提供:

\SetTblrInner[tblr, talltblr]
             {colspec = {ccc},
              row{1} = {font=\bfseries},
              hline{1,2,Z} = {1pt},
              vline{2-Y} = {1pt}}

该表的全图说明了默认浮动周围的垂直间距表格标题周围的垂直间距由标题参数定义(aboveskip故意设置为 2em):

\captionsetup[table]
             {labelsep=period,                  % caption separation for tables
              position=t,                       % caption position for tables
              justification=raggedright,        % caption alignment for tables
              singlelinecheck=off,              % don't center single line table captions
              aboveskip=2em}                    % above skip for table captions

default有主题的桌子

我们来看看下表的布局:

使用嵌套在 table 环境中的 talltblr 表的浮动表

它的代码如下:

\partop

\begin{table}[!h]
 \begin{talltblr}
       [caption = {Simple floating three part table (\texttt{default} theme)},
        entry = {Floating \texttt{talltblr} with \texttt{default} theme},
        label = {tab:table-simple-default}]{}
  \tblrcontents
 \end{talltblr}
\end{table}

\parbot

此表是使用talltblr环境排版的。假设我需要排版一个带注释的表格,所以我必须使用talltblr浮动表格。两个虚拟文本表格说明定义为:

\newcommand{\dummytext}{And a long line of dummy text.}
\newcommand{\nfirsttext}{The first note text. \dummytext}
\newcommand{\nsecondtext}{The second note text. \dummytext}

talltblr并且通过指定外部参数将这些注释添加到所有表中:

\SetTblrOuter[talltblr]
             {headsep = \abovecaptionskip,
              note{1} = {\nfirsttext},
              note{2} = {\nsecondtext}}

上面的宏还指定了标题段落与​​表格主体之间的间距. 表格整体排版由tabularray包,无功能caption使用的包。标题段落外观默认为tabularray包裹:

  • 该段落的文字是合理的,
  • 前缀以悬挂方式缩进,
  • 分隔符是冒号。

很难注意到,但这个表格的标题文本基线和顶部水平线之间的距离是小一点比上表所需时间要多。这是因为未插入支柱在文本最后一行的末尾。这个问题与下一个表格无关,它是第一个表格的变体(参见 MWE)。

captionof再次呈现主题的桌子

这是 MWE 中提到的表格的布局,但它是以另一种方式排版的:

使用 talltblr 环境和 captionof 主题的浮动表格

这段代码是(它不太冗长,不是吗?):

\partop

\begin{table}[!h]
 \begin{talltblr}
       [theme = captionof,
        caption = {Simple floating three part table (\texttt{captionof} theme)},
        entry = {Floating \texttt{talltblr} with \texttt{captionof} theme},
        label = {tab:table-simple-captionof}]{}
  \tblrcontents
 \end{talltblr}
\end{table}

\parbot

主题captionof的定义与 MWE 中一样,因此布局相同。顺便说一下,此表在示例中再次使用,但没有简短标题。以下是代码:

\partop

\begin{table}[!h]
 \begin{talltblr}
       [theme = captionof,
        caption = {Simple floating three part table (\texttt{captionof} theme)},
        label = {tab:table-simple-captionof-longcap}]{}
  \tblrcontents
 \end{talltblr}
\end{table}

\parbot

我们来看一下表格列表,看看表 3 和表 4 是如何提及的:

表格列表

mysimpletheme有主题的桌子

下一桌的主题灵感来自于此关于如何将标题左对齐的答案。 布局:

使用 talltblr 环境和 mysimpletheme 主题的浮动表格

以及代码:

\partop

\begin{table}[!h]
 \begin{talltblr}
       [theme = mysimpletheme,
        caption = {Simple floating three part table (\texttt{mysimpletheme} theme)},
        entry = {Floating \texttt{talltblr} \texttt{mysimpletheme} theme},
        label = {tab:table-simple-simple}]{}
  \tblrcontents
 \end{talltblr}
\end{table}

\parbot

所调用的主题mysimpletheme由以下代码定义:

\NewTblrTheme { mysimpletheme }
  {
    \SetTblrTemplate { caption } { mysimple }
    \SetTblrStyle { caption } { halign=l }
  }

提到的mysimple标题模板定义如下:

\DefTblrTemplate { caption } { mysimple }
  {
    \UseTblrAlign { caption }
    \UseTblrIndent { caption }
    \UseTblrHang { caption }
    \leavevmode
    \strut
    \UseTblrTemplate { caption-tag } { default }
    \UseTblrTemplate { caption-sep } { mycapsep }
    \UseTblrTemplate { caption-text } { default }
    \strut
    \par
  }

simple此模板基于tabularray,但它在文本和分隔符的两端使用了我自己定义的 struts,如下所示:

\DefTblrTemplate { caption-sep } { mycapsep } { .\enskip }

所以,间距的标题是正确的,标题格式是正确的,并且标题结盟符合我的要求。

该表还有一种没有短标题的变体。

mycaptiontheme有主题的桌子

最后一个是主题为 的表格mycaptiontheme。布局如下:

使用 talltblr 环境和 mycaptiontheme 主题的浮动表格

代码如下:

\partop

\begin{table}[!h]
 \begin{talltblr}
       [theme = mycaptiontheme,
        caption = {Simple floating three part table
                   (\texttt{mycaptiontheme} theme with \texttt{simple}-like caption template,
                    \texttt{\char`\\makebox} and \texttt{\char`\\parbox})},
        entry = {Floating \texttt{talltblr} \texttt{mycaptiontheme} theme},
        label = {tab:table-simple-mycaption}]{}
  \tblrcontents
 \end{talltblr}
\end{table}

\parbot

mycaptiontheme定义为:

\NewTblrTheme { mycaptiontheme }
  {
    \SetTblrTemplate { caption } { mycaption }
  }

模板mycaption定义为:

\DefTblrTemplate { caption } { mycaption }
  {
    \UseTblrAlign { caption }
    \UseTblrIndent { caption }
    \UseTblrHang { caption }
    \leavevmode
    \makebox [ \linewidth ] [ l ]
      {
        \parbox { \textwidth }
          {
            \raggedright
            \strut
            \UseTblrTemplate { caption-tag } { default }
            \UseTblrTemplate { caption-sep } { mycapsep }
            \UseTblrTemplate { caption-text } { default }
            \strut
          }
      }
  }

可以看出,该定义与mysimple标题模板的定义略有不同。标题文本排版在 中,并\parbox嵌套在 的框中\makebox。这样做是为了实现与环境中的示例标题对齐接近的标题对齐tblr,即标题段落应分布在文本列的整个宽度由于上述段落应嵌套在talltblr环境提供的表格的宽度内(目前它小于文本列的宽度),因此应将其放置在合法宽度的框内(目前为\linewidth)。

该表满足以下要求:

  • 间距的标题是正确的,
  • 标题格式是正确的,
  • 标题结盟是正确的,
  • 标题段落的宽度是正确的。

结论

  1. 间距表格主体和标题段落之间的间距可以通过aboveskip=2em(caption包参数)作为表格标题,无论它是否由caption包或环境。简单环境和主题环境的talltblr情况都是如此,主题除外。tblrtalltblrdefault
  2. 格式可以通过两种方式控制标题:
    • 标签分隔符可以用labelsep(caption包参数),并且可以被captionof主题重复用于talltblr环境;
    • 标题文本组合的内容元素可以单独调整——使用\captionsetup[table]caption包,并具有与环境对应的主题(mysimplethememycaptiontheme适合) 。talltblr
  3. 目前我还没有实现段落对齐作为标题。我定义它的方式不是通用的。
  4. 标题的段落宽度talltblr通过主题环境排版mycaptiontheme可以类似于caption包。但我不确定在模板\textwidth中的用法。mycaption
  5. 欢迎提供补丁。

相关内容