就 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}
此示例产生下表。
那么……发生了什么?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
您可以使用默认标题longtblr
和talltblr
甚至使用包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}