tabularray 带有 longtblr,如何更改标题和标题分隔符的对齐方式

tabularray 带有 longtblr,如何更改标题和标题分隔符的对齐方式

就 LaTeX 知识而言,我是一个初学者,正在尝试使用 tabularray 中的 longtblr 创建一个跨越两个连续页面的 longtable。默认情况下,表格标题的对齐方式设置为居中。此外,标题文本和标签之间的分隔符是“:”,我想知道如何将标签和标题的对齐方式更改为左侧。我还想将分隔符更改为“。”,但我不知道如何根据我的代码执行此操作,其中的一部分我已粘贴在下面:


\NewTblrTheme{fancy}{
  \SetTblrStyle{caption-tag}{font=\bfseries\fontsize{10}{12}\selectfont}
  \SetTblrStyle{caption-sep}{font=\bfseries\fontsize{10}{12}\selectfont}
  \SetTblrStyle{caption-text}{font=\fontsize{10}{12}\selectfont}
}
\begin{longtblr}[
  theme=fancy,
  caption = {Your table caption here},
  label = {tbl:mytable}, 
]{
  colspec={X[1]X[3]},
  rowhead=1,
  %row{1}={font=\bfseries, bg=white, fg=black},
  rowsep=0.5ex,
  %column{1}={font=\bfseries},
  width=0.9\linewidth}
}

我将非常感激您的帮助。谢谢!

答案1

事实证明,虽然tabularray是一个制作漂亮表格的好软件包……但对于初学者来说,它并不是最友好的软件包,因为它依赖于 LaTeX3 语法,而对于习惯使用 LaTeX2e 的人来说,这可能会增加难度。

我也不能完全归功于这个解决方案,因为真正花时间展示源代码修改的人是 TheEndofTheWorld 在这个帖子。但是这里有一些东西可能会对你有帮助!


\usepackage{tabularray}
\usepackage{xcolor} % Only if you want to color the cells

\begin{document}

% Edits on the tabularray defaults
\ExplSyntaxOn
\DefTblrTemplate{caption-sep}{default}{.\enskip}    % Change ":" to "."
\DefTblrTemplate{caption}{default}                  % Entire caption setup
{%
  \hbox_set:Nn \l__tblr_caption_box{%
    \UseTblrTemplate{caption-tag}{default}
    \UseTblrTemplate{caption-sep}{default}
    \UseTblrTemplate{caption-text}{default}
  }
  \dim_compare:nNnTF{\box_wd:N \l__tblr_caption_box} > {\hsize}
  {%
    \UseTblrAlign{caption}
    \UseTblrIndent{caption}
    \hbox_set:Nn \l__tblr_caption_left_box{%
      \UseTblrTemplate{caption-tag}{default}
      \UseTblrTemplate{caption-sep}{default}
    }
    \hangindent = \box_wd:N \l__tblr_caption_left_box
    \hangafter = 1
    \UseTblrHang{caption}
    \leavevmode
    \hbox_unpack:N \l__tblr_caption_box
    \par
  }{%
    \centering
    \makebox[\hsize][l]{\box_use:N \l__tblr_caption_box}    % "c" to "l"
    \par
  }
}
\ExplSyntaxOff

% Your custom style!
\NewTblrTheme{fancy}{%
  \SetTblrStyle{caption-tag}{font=\bfseries\fontsize{10}{12}\selectfont}
  \SetTblrStyle{caption-sep}{font=\bfseries\fontsize{10}{12}\selectfont}
  \SetTblrStyle{caption-text}{font=\fontsize{10}{12}\selectfont}
}

\begin{longtblr}[%
  theme = fancy,
  caption = {A fancy caption here},
  label = {tbl:mytable}
]{%
  hlines,
  vlines,
  colspec   = {X[1]X[3]},
  rowhead   = 1,
  rowsep    = 0.5ex,
  width     = 0.9\linewidth,
  row{1}    = {font=\bfseries, bg=white, fg=black},
  column{1} = {font=\bfseries}
}
Header       & Second header\\
First column & Second column\\
First column & Second column\\
First column & Second column\\
First column & Second column\\


\end{longtblr}

\end{document}

此示例产生下表。

输出 1

那么……发生了什么?tabularray这里加载的“默认”表有两处修改。第一处在第 10 行,原文是这么说的……

\DefTblrTemplate{caption-sep}{default}{:\enskip}

现在我们把它改成这样!

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

最后一个括号的内容告诉我们正在使用什么分隔符。该\enskip命令只需按一下空格键,但几乎可以编辑为任何内容。不要引用我的话,但理论上,将第二个括号设置为“fancy”并将其粘贴在原始定义之前应该可以工作,但我不知道为什么在我这边没有成功,可能是我的构建有问题,所以……我只是用炸药赶走一只苍蝇,因为……嘿!它有效!

第 11 行包含默认标题的完整定义,因此无论我们喜欢与否,我们都必须重写其中的所有内容,以避免导致崩溃。因此,第 12 行至第 32 行与源代码完全一致。

第 34 行有您需要的编辑。原始行是这样的。

\makebox[\hsize][c]{\box_use:N \l__tblr_caption_box}

现在我们有了这个!

\makebox[\hsize][l]{\box_use:N \l__tblr_caption_box}

参数 中的参数\makebox告诉您内容的方向。 原来是c居中,现在我们用l左对齐!

再说一遍,所有这些都应该可以工作,而无需将第 11 行的默认值移至“fancy”,但是......由于某些奇怪的原因,我无法让它工作,而且我仍然在挠头为什么如此......现在是炸药时间!

我知道这不是最简单的解决方案,但我希望它能帮助您编辑项目所需的内容!

答案2

您可以使用默认标题longtblrtalltblr甚至使用包caption自定义标题tblr-extras

请参阅以下示例:

\documentclass{scrartcl}
\usepackage{caption}
\captionsetup{format=plain,labelformat=simple,labelfont=bf,font=small,labelsep=colon}
\usepackage{tabularray,tblr-extras}
\UseTblrLibrary{caption}

\begin{document}
    \listoftables   
    
    \centering
    \begin{talltblr}[
        caption = {The Caption of {\ttfamily talltblr} environment.},
        ]{
            colspec = {rccl},
            hline{Z} = {0.08em},
            hline{2} = {0.05em},
            row{1} = {font=\bfseries},
            rowhead = 1,
        }
        date       & time  & time zone & event \\
        2019/01/01 & 00:00 & CET & server installation finished\\
        2019/01/01 & 00:05 & CET & server successfully booted\\
        2019/01/01 & 00:06 & CET & starting xyz daemon\\
    \end{talltblr}
    
    \begin{longtblr}[
        caption = {The Caption of {\ttfamily longtblr} environment.},
        entry = {The Caption in LOT},
        ]{
            colspec = {rccl},
            hline{Z} = {0.08em},
            hline{2} = {0.05em},
            row{1} = {font=\bfseries},
            rowhead = 1,
        }
        date       & time  & time zone & event \\
        2019/01/01 & 00:00 & CET & server installation finished\\
        2019/01/01 & 00:05 & CET & server successfully booted\\
        2019/01/01 & 00:06 & CET & starting xyz daemon\\
    \end{longtblr}
    
    \begin{longtblr}[
        caption = {The Caption of {\ttfamily longtblr} environment.},
        ]{
            colspec = {rccl},
            hline{Z} = {0.08em},
            hline{2} = {0.05em},
            row{1} = {font=\bfseries},
            rowhead = 1,
        }
        date       & time  & time zone & event \\
        2019/01/01 & 00:00 & CET & server installation finished\\
        2019/01/01 & 00:05 & CET & server successfully booted\\
        2019/01/01 & 00:06 & CET & starting xyz daemon\\
    \end{longtblr}
\end{document}

在此处输入图片描述

相关内容