
Ich habe bei der Verwendung von „Neu definierten TblrTemplates“ einige kleine Probleme festgestellt. Diese neu definierte Vorlage wurde verwendet, um die Longtblr-Beschriftungen linksbündig auszurichten.
Wenn die Überschrift der Tabelle lang genug ist, muss sie gemäß meiner Formatierung in der nächsten Zeile hängen. Wenn die Breite der Tabelle der Breite des Textes entspricht, hängt die Überschrift der Tabelle perfekt in der nächsten Zeile. Das Problem trat auf, wenn die Breite der Tabelle nicht der Breite des Textes entsprach. Wie Sie sehen, wurde die Überschrift kleiner, als die Breite der Tabelle abnahm.
Ich habe die Lösung mit dem Caption-Paket ausprobiert,
\captionsetup{width=1\textwidth}
aber es würde nicht funktionieren, weil longtblr in seiner eigenen Umgebung ausgeführt wird.
Ich habe ein wenig recherchiert und einige Antworten gefundenHier. Diese Lösung scheint das Problem mit der Untertitelbreite zu lösen, aber aus irgendeinem Grund bleiben die Untertitel nicht mehr hängen. Außerdem diese AntwortHierlöste das Problem mit der hängenden Beschriftung, verkleinerte aber auch die Beschriftung. Beim Versuch, diese beiden Methoden zu kombinieren, schlug das nicht geklappt.
Meine Programmierkenntnisse reichen nicht aus, um den Tabularray-Quellcode zu ändern. Um eine Tabellenüberschrift zu erhalten, die in der nächsten Zeile hängt und die Breite der Textbreite hat, brauche ich dringend Hilfe. Jeder Vorschlag oder jede Antwort ist willkommen.
\documentclass{article}
\usepackage{tabularray}
\usepackage[singlelinecheck=off]{caption}
\captionsetup[table]{format=hang}
% Redefined TblrTemplates
\ExplSyntaxOn
\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][l]{\box_use:N \l__tblr_caption_box}
\par
}}
\DefTblrTemplate{capcont}{normal}{
\hbox_set:Nn \l__tblr_caption_box{
\UseTblrTemplate{caption-tag}{default}
\UseTblrTemplate{caption-sep}{default}
\UseTblrTemplate{caption-text}{default}
\space
\UseTblrTemplate{conthead-text}{default}
}
\dim_compare:nNnTF{\box_wd:N \l__tblr_caption_box}>{\hsize}{
\UseTblrAlign{capcont}
\UseTblrIndent{capcont}
\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{capcont}
\leavevmode
\hbox_unpack:N \l__tblr_caption_box
\par
}{
\centering
\makebox[\hsize][l]{\box_use:N \l__tblr_caption_box}
\par
}}
\SetTblrTemplate{caption}{normal}
\SetTblrTemplate{capcont}{normal}
\ExplSyntaxOff
\begin{document}
\begin{table}[h]
\caption{This is a normal table caption using a table environment. If the table's caption is long enough, the formatting requires it to hang on the next line}
\centering
\begin{tblr}{
width=0.5\linewidth,
colspec={XXX},
hlines, vlines
}
Head & Head & Head \\
Head & Data & Data \\
\end{tblr}
\end{table}
\begin{longtblr}[
caption={This is a long table that uses "Redefined TblrTemplates" suggested by @samcarter\_is\_at\_topanswers.xyz. The table caption was hanging perfectly on the next line with no problems}
]{
colspec={XXX},
hlines, vlines,
rowhead=1
}
Head & Head & Head \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
\end{longtblr}
\begin{longtblr}[
caption={The problem occurred when the width of the table didn't equal the text width. As you can see, the caption shrunk as the table width decreased}
]{
colspec={*3{X[2cm]}},
hlines, vlines,
rowhead=1
}
Head & Head & Head \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
\end{longtblr}
\end{document}
Antwort1
Hier ist eine Lösung, die die Zentrierung des Tisches beibehält. Basierend aufhttps://tex.stackexchange.com/a/630675/113546
\documentclass{article}
\usepackage{tabularray}
\usepackage[singlelinecheck=off]{caption}
\captionsetup[table]{format=hang}
% Redefined TblrTemplates
\ExplSyntaxOn
\DefTblrTemplate{caption}{normal}{
\makebox[\hsize][c]{% see https://tex.stackexchange.com/a/630675/113546
\parbox{\textwidth}{%
\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}
\par
}}
}
}
\DefTblrTemplate{capcont}{normal}{
\makebox[\hsize][c]{% see https://tex.stackexchange.com/a/630675/113546
\parbox{\textwidth}{%
\hbox_set:Nn \l__tblr_caption_box{
\UseTblrTemplate{caption-tag}{default}
\UseTblrTemplate{caption-sep}{default}
\UseTblrTemplate{caption-text}{default}
\space
\UseTblrTemplate{conthead-text}{default}
}
\dim_compare:nNnTF{\box_wd:N \l__tblr_caption_box}>{\hsize}{
\UseTblrAlign{capcont}
\UseTblrIndent{capcont}
\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{capcont}
\leavevmode
\hbox_unpack:N \l__tblr_caption_box
\par
}{
\centering
\makebox[\hsize][l]{\box_use:N \l__tblr_caption_box}
\par
}}
}
}
\SetTblrTemplate{caption}{normal}
\SetTblrTemplate{capcont}{normal}
\ExplSyntaxOff
\begin{document}
\begin{table}[h]
\caption{This is a normal table caption using a table environment. If the table's caption is long enough, the formatting requires it to hang on the next line}
\centering
\begin{tblr}{
width=0.5\linewidth,
colspec={XXX},
hlines, vlines
}
Head & Head & Head \\
Head & Data & Data \\
\end{tblr}
\end{table}
\begin{longtblr}[
caption={This is a long table that uses "Redefined TblrTemplates" suggested by @samcarter\_is\_at\_topanswers.xyz. The table caption was hanging perfectly on the next line with no problems}
]{
colspec={XXX},
hlines, vlines,
rowhead=1
}
Head & Head & Head \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
\end{longtblr}
\begin{longtblr}[
caption={The problem occurred when the width of the table didn't equal the text width. As you can see, the caption shrunk as the table width decreased}
]{
colspec={*3{X[2cm]}},
hlines, vlines,
rowhead=1
}
Head & Head & Head \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
Head & Data & Data \\ Head & Data & Data \\
\end{longtblr}
\end{document}