![使用 tabularray 的 longtblr 中的 caption 包定义的标题样式](https://linux22.com/image/463454/%E4%BD%BF%E7%94%A8%20tabularray%20%E7%9A%84%20longtblr%20%E4%B8%AD%E7%9A%84%20caption%20%E5%8C%85%E5%AE%9A%E4%B9%89%E7%9A%84%E6%A0%87%E9%A2%98%E6%A0%B7%E5%BC%8F.png)
有没有办法使用caption
包中定义的标题样式longtblr
?
为了格式化表格标题,我使用caption
如下包:
\usepackage[
hypcap=true,
format=hang,
font={footnotesize, sf},
labelfont={bf},
margin=0cm,
aboveskip=8pt,
singlelinecheck=off,
]{caption}
这对于小表格(没有分页符/页面延续)非常有效:
\begin{table}[!htbp]
\captionsetup{type=table}
\caption{A small table}
\begin{tblr}{l X[r] X[r] X[r]}
a & b & c & d \\
a & b & c & d \\
a & b & c & d \\
\end{tblr}
\end{table}
但是,我的长桌上没有使用这种风格。我看了看tabularray
文档(第 4.2.1 节),但我所能找到的只是与标题内容有关,而不是其风格。根据caption
文档(简介),caption
不涉及标题内容,而仅涉及标题样式:
请注意,字幕包仅控制字幕的外观和感觉。
有没有办法将longtblr
环境与包中定义的标题样式结合起来caption
?
MWE如下:
\documentclass{article}
\usepackage{tabularray}
\usepackage[
hypcap=true,
format=hang,
font={footnotesize, sf},
labelfont={bf},
margin=0cm,
aboveskip=8pt,
singlelinecheck=off,
]{caption}
\begin{document}
\begin{table}[!htbp]
\captionsetup{type=table}
\caption{A small table}
\begin{tblr}{l X[r] X[r] X[r]}
a & b & c & d\\
a & b & c & d\\
a & b & c & d \\
\end{tblr}
\end{table}
\begin{longtblr}[
caption = A long table,
]{
colspec = {l X X},
rowhead = 1, rowfoot = 0,
}
Head & Head & Head \\
Alpha & Beta & Gamma \\
Epsilon & Zeta & Eta \\
Iota & Kappa & Lambda \\
Nu & Xi & Omicron \\
Rho & Sigma & Tau \\
Phi & Chi & Psi \\
Alpha & Beta & Gamma \\
Epsilon & Zeta & Eta \\
Iota & Kappa & Lambda \\
Nu & Xi & Omicron \\
Rho & Sigma & Tau \\
Phi & Chi & Psi \\
Alpha & Beta & Gamma \\
Epsilon & Zeta & Eta \\
Iota & Kappa & Lambda \\
Nu & Xi & Omicron \\
Rho & Sigma & Tau \\
Phi & Chi & Psi \\
Alpha & Beta & Gamma \\
Epsilon & Zeta & Eta \\
Iota & Kappa & Lambda \\
Nu & Xi & Omicron \\
Rho & Sigma & Tau \\
Phi & Chi & Psi \\
Alpha & Beta & Gamma \\
Epsilon & Zeta & Eta \\
Iota & Kappa & Lambda \\
Nu & Xi & Omicron \\
Rho & Sigma & Tau \\
Phi & Chi & Psi \\
Alpha & Beta & Gamma \\
Epsilon & Zeta & Eta \\
Iota & Kappa & Lambda \\
Nu & Xi & Omicron \\
Rho & Sigma & Tau \\
Phi & Chi & Psi \\
Alpha & Beta & Gamma \\
Epsilon & Zeta & Eta \\
Iota & Kappa & Lambda \\
Nu & Xi & Omicron \\
Rho & Sigma & Tau \\
Phi & Chi & Psi \\
Alpha & Beta & Gamma \\
Epsilon & Zeta & Eta \\
Iota & Kappa & Lambda \\
Nu & Xi & Omicron \\
Rho & Sigma & Tau \\
Phi & Chi & Psi \\
\end{longtblr}
\end{document}
答案1
Zarko 在链接中给出的解决方案在没有 的文档中效果很好\listoftables
。一旦您想要获得该列表,您将得到其中每个表格的两个条目。输入短标题(应在表格列表中)和长版本(应仅用于标题本身)。
正如您(和我)注意到的,该tabularray
包不遵循caption
包中设置的选项。但该包确实有一种广泛的方法来定义主题可以用来以所需的方式设置表格标题。
我使用一个彩色框来排版标题。无需创建整个 MWE,我只需提供设置caption
和(几乎)等效tabularray theme
设置的代码片段。
我的字幕设置定义如下:
\usepackage{xcolor}
\definecolor{color2}{RGB}{255,255,120} % Color of the boxes behind the abstract and headings (dark yellow)
\definecolor{color5}{RGB}{139,0,139} %Color of captions (dark purple)
\usepackage[labelfont={bf,sf,small,color=color5},%
labelsep=endash,%
box=colorbox,boxcolor=color2!10,slc=off,%
textfont={color=color5},%
justification=justified,%raggedright,%
format=hang,indention=-15mm]{caption}
\setlength{\abovecaptionskip}{0pt}
\setlength{\belowcaptionskip}{0pt}
由此衍生的 tabularray 主题是:
\usepackage{tabularray}
\UseTblrLibrary{booktabs,siunitx,varwidth}
\DefTblrTemplate{caption-tag}{color}{\textcolor{color5}{\textsf{\textbf{Tabel \thetable}}}}
\DefTblrTemplate{caption-sep}{color}{\textcolor{color5}{\textbf{--}}}
\DefTblrTemplate{caption-text}{color}{\textcolor{color5}{\InsertTblrText{caption}}}
\DefTblrTemplate{caption-text}{colorcont}{\textcolor{color5}{\InsertTblrText{entry}}}
\DefTblrTemplate{conthead-text}{color}{\textcolor{color5}{(Vervolg)}}
\DefTblrTemplate{contfoot-text}{color}{\textcolor{color5}{\footnotesize Vervolg op volgende pagina}}
\DefTblrTemplate{caption}{color}{
\UseTblrTemplate{caption-tag}{color}
\UseTblrTemplate{caption-sep}{color}
\UseTblrTemplate{caption-text}{color}
}
\DefTblrTemplate{capcont}{color}{
\UseTblrTemplate{caption-tag}{color}
\UseTblrTemplate{caption-sep}{color}
\UseTblrTemplate{caption-text}{colorcont}
\UseTblrTemplate{conthead-text}{color}
}
\NewTblrTheme{colorcaps}{
\SetTblrTemplate{caption}{color}
\SetTblrTemplate{capcont}{color}
\SetTblrTemplate{contfoot-text}{color}
\SetTblrStyle{remark}{font=\footnotesize}
\SetTblrStyle{note}{font=\footnotesize}
}
\usepackage{floatrow}
\DeclareCaptionLabelSeparator{endash}{\textcolor{color5}{\enskip -- \space}}
如您所见,该包floatrow
为主题提供了标题标签分隔符。我仍然遇到的一个问题是悬挂缩进。否则使用主题彩色帽子在tall/longtblr
环境中根据设置标题,\captionsetup
并且只有简短的条目放在里面\listoftables
。
答案2
只需使用这个包:
\usepackage{tblr-caption}%Para alinear en formato APA
\UseTblrLibrary{caption}
%% tblr-caption.sty
%% Copyright 2024 Manuel E. Merino
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
% The latest version of this license is in
% https://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions of LaTeX
% version 2008 or later.
%
% This work has the LPPL maintenance status `maintained'.
%
% The Current Maintainer of this work is Manuel E. Merino
%
\ProvidesPackage{tblr-caption}[2024/02/06 package tblr-caption]
\RequirePackage{tabularray}
\RequirePackage{caption}
\@ifundefined{KOMAClassName}
{}
{\PackageWarningNoLine{tblr-caption}{KOMAScript class detected. Setup caption position using 'captions=<option>'}}
\@ifpackageloaded{hyperref}{%
\newenvironment{nohyp}{\begin{NoHyper}}{\end{NoHyper}}
}{%
\newenvironment{nohyp}{}{}
}
\ExplSyntaxOn
\prg_generate_conditional_variant:Nnn \tl_if_empty:n { e } { TF }
\let \IfTokenListEmpty = \tl_if_empty:eTF
\ExplSyntaxOff
\NewTblrLibrary{caption}
{%
\SetTblrOuter[talltblr,longtblr]{headsep=0pt}
\DefTblrTemplate{firsthead}{default}{%
\addtocounter{table}{-1}%
\IfTokenListEmpty{\InsertTblrText{entry}}{%
\begin{nohyp}%
\captionsetup{type=table}
\caption{\InsertTblrText{caption}}%
\end{nohyp}%
}{%
\begin{nohyp}%
\captionsetup{type=table}
\caption[\InsertTblrText{entry}]{\InsertTblrText{caption}}%
\end{nohyp}%
}%
}
\DefTblrTemplate{middlehead,lasthead}{default}{%
\addtocounter{table}{-1}%
\captionsetup{type=table}%
\caption[]{\InsertTblrText{caption} \UseTblrTemplate{conthead}{default}}
\vspace*{1pt}%
}
\SetTblrTemplate{caption-lot}{empty}
}