我正在使用非常好的软件包tabularray
,我想将表格的标题放在侧边距上(如 Tufte-Style),但我没有找到办法。在文档中(4.2.3手动的)我刚刚找到了一种自定义字体和其他选项的方法,使用以下命令:
\DefTblrTemplate{caption-tag}{default}{Table\hspace{0.25em}\thetable}
\DefTblrTemplate{caption-sep}{default}{:\enskip}
\DefTblrTemplate{caption-text}{default}{\InsertTblrText{caption}}
但这并不影响标题的位置。
这里有一个非常 MWE:
\documentclass[12pt, mpinclude]{scrbook}
\usepackage{tabularray}
\begin{document}
\DefTblrTemplate{caption-tag}{default}{Tabela\hspace{0.25em}\thetable}
\DefTblrTemplate{caption-sep}{default}{-\enskip}
\DefTblrTemplate{caption-text}{default}{\InsertTblrText{caption}}
\begin{longtblr}[caption={one table}]{colspec = {X[c]X[c]X[c]}}
1 & 2& 3 &\\
4 & 5& 6\\
7 & 8 & 9 \\
\end{longtblr}
\end{document}
编辑:我提到 Tufte 风格只是因为我试图在文档中重现这种风格,并且它使用了边距中的所有标题,但我没有使用这个特定的类。
答案1
一个简单的解决方案是完全删除标准标题,并且在.\captionof
中使用是 soma-script 中的标准命令,否则您必须使用像 . 这样的包。\marginpar
\captionof
caption
\documentclass[12pt, mpinclude]{scrbook}
\usepackage{tabularray}
\setcapindent{0pt}
\begin{document}
\DefTblrTemplate{caption-tag}{default}{}
\DefTblrTemplate{caption-sep}{default}{}
\DefTblrTemplate{caption-text}{default}{}
\renewcommand{\tablename}{Tabela}
\marginpar{\captionof{table}{\null\\one table}}
\begin{longtblr}[caption={one table}]{colspec = {X[c]X[c]X[c]}}
1 & 2& 3 &\\
4 & 5& 6\\
7 & 8 & 9 \\
\end{longtblr}
\end{document}
答案2
我找到了解决方案!您需要重新定义/创建模板命令。我使用下面的代码重新定义了默认模板。
\DefTblrTemplate { caption } { normal }
{
\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] [c] { \box_use:N \l__tblr_caption_box }
\par
}
}
我重新定义了default
风格如下:
\DefTblrTemplate { caption } { default }
{
\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
}
{
\marginnote { \box_use:N \l__tblr_caption_box }
\par
}
}
在这里我改变了这些位置:
\centering
\makebox [\hsize] [c] { \box_use:N \l__tblr_caption_box }
\par
至以下几行:
\marginnote { \box_use:N \l__tblr_caption_box }
\par
现在标题在边缘。不幸的是,该\marginpar
命令不起作用,如果您尝试使用它,您将收到错误:! LaTeX Error: Not in outer par mode.
因此,您需要使用该包marginnote
来获取正确的命令。
完整代码:
\documentclass[12pt, mpinclude]{scrbook}
\usepackage{tabularray}
\usepackage{marginnote}
\begin{document}
\ExplSyntaxOn
\DefTblrTemplate { caption } { default }
{
\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
}
{
\marginnote { \box_use:N \l__tblr_caption_box }
\par
}
}
\ExplSyntaxOff
\DefTblrTemplate{caption-tag}{default}{Tabela\hspace{0.25em}\thetable}
\DefTblrTemplate{caption-sep}{default}{-\enskip}
\DefTblrTemplate{caption-text}{default}{\InsertTblrText{caption}}
\begin{longtblr}[caption={one table}]{colspec = {X[c]X[c]X[c]}}
1 & 2& 3 &\\
4 & 5& 6\\
7 & 8 & 9 \\
\end{longtblr}
\end{document}
输出: