具有多列的表格(XLTabular)

具有多列的表格(XLTabular)

我想使用包创建表格xltabular,因为它具有良好的兼容性,能够自动适应页边距。我的表格有很多列,根据我所在机构的规定,我可能无法以横向格式制作此表格,因此我必须坚持使用纵向。

这是由 Microsoft Excel 生成的表格截图。 表格截图

目前,MWE 正在使用longtable包。虽然这看起来很不错,但仍然超出了范围。这是代码,我将在下面附上屏幕截图。

\documentclass[12pt, a4paper, onecolumn, oneside, final]{report}
\makeatother

\usepackage{array}
\setlength\extrarowheight{4pt}

\usepackage{tabto}
\newenvironment{tabs}[1]
{\TabPositions{#1}}

\usepackage{longtable}  
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}

\usepackage{multicol}
\usepackage{multirow}
\usepackage{bigstrut}

\usepackage{geometry}
\geometry{
  left=4cm,
  top=3cm,
  right=3cm,
  bottom=3cm,
}

\begin{document}
\begingroup
\setlength{\LTleft}{-20cm plus -1fill} % set margin
\setlength{\LTright}{\LTleft} % set margin
\begin{small}
    \begin{longtable}{|c|m{0.15\textwidth}|r|m{0.15\textwidth}|m{0.1\textwidth}|m{0.1\textwidth}|r|r|r|r|}
        \caption{Hasil Perbandingan \textit{Pitch} pada lagu Twinkle-Twinkle Little Star di Model Pertama}
        \label{tab:diff-twinkle-model1}\\
        
        \hline
        
        \multicolumn{1}{|c|}{\textbf{No}} & 
        \multicolumn{1}{c|}{\textbf{Pitch Result}} & \multicolumn{1}{c|}{\textbf{Dist}} & \multicolumn{1}{c|}{\textbf{Match}} & \multicolumn{1}{c|}{\textbf{Diff1}} & \multicolumn{1}{c|}{\textbf{Diff2}} & \multicolumn{1}{c|}{\textbf{Len\_match}} & \multicolumn{1}{c|}{\textbf{len\_diff1}} & \multicolumn{1}{c|}{\textbf{len\_diff2}} & \multicolumn{1}{c|}{\textbf{percentage}} \bigstrut\\

        \textbf{1} & [0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58] & 2     & [0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58] & []    & []    & 14    & 0     & 0     & 100.00\% \bigstrut\\
        \hline
        \textbf{2} & [0, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57] & 521   & [0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57] & [58]  & [44, 45] & 13    & 1     & 2     & 71.43\% \bigstrut\\
        \hline
\textbf{3} & [0, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59] & 550   & [0, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58] & [46, 47] & [59]  & 12    & 2     & 1     & 64.29\% \bigstrut\\
        \hline
        \textbf{4} & [0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55] & 637   & [0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55] & [56, 57, 58] & []    & 11    & 3     & 0     & 57.14\% \bigstrut\\
        \hline
    \end{longtable}
\end{small}
\endgroup
\end{document}

这是longtable输出。注意红线。它表示页边距。长表超出了页边距。
longtable 输出

当我尝试实现时xltabular,我将其添加到我的序言中:

\usepackage{xltabular}
\newcolumntype{Z}{>{\RaggedRight}X}
\setlength\LTcapwidth{\textwidth}

但是,输出结果看起来不太好看。这是当前输出的示例,其中有重叠的列文本。 xltabular 列输出

这是我正在尝试使用的代码。

\begin{xltabular}{\textwidth}{@{} >{\bfseries}l | Z | r | Z | Z | Z | r | r | r | r @{}}
    
    \caption{Hasil Perbandingan \textit{Pitch} pada lagu Twinkle-Twinkle Little Star di Model Pertama}
    \label{tab:diff-twinkle-model1} \\
    \toprule
    {\textbf{No}} & {\textbf{unique-pitch}} & {\textbf{distance}} & {\textbf{Match}} & {\textbf{diff\_kurang}} & {\textbf{diff\_lebih}} & {\textbf{len\_match}} & {\textbf{len\_kurang}} & {\textbf{len\_lebih}} & {\textbf{percentage}} \bigstrut\\
    
    \midrule    
    \endhead
    
    \midrule
    \endfoot
    
    \bottomrule
    \endlastfoot
\end{xltabular}

我该怎么做才能修复我的表格?我应该修复我的表格longtable还是使用创建一个新表格xltabular

答案1

您可能喜欢以下结果:

在此处输入图片描述

(红线表示页面布局)

其生产厂家为:

\documentclass[12pt, a4paper, onecolumn, oneside, final]{report}
\usepackage[hmargin={4cm, 3cm},
            vmargin={3cm, 3cm}
              ]{geometry}
\usepackage{array, makecell, multirow, xltabular}
\renewcommand\theadfont{\bfseries}
\renewcommand\theadgape{}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}

%---------------- Show page layout. Don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\usepackage{lipsum}% For dummy text. Don't use in a real document

\begin{document}
\lipsum[1]

\begingroup
\footnotesize  % <--- size of fonts in the table
\setlength\tabcolsep{3pt}
\setcellgapes{2pt}
\makegapedcells
\setlength\LTcapwidth{\dimexpr\linewidth-3pt}
    \begin{xltabular}{\linewidth}{|>{\bfseries}c|L|r|L|L|L|r|r|r|r|}
\caption{Hasil Perbandingan \textit{Pitch} pada lagu Twinkle-Twinkle Little Star di Model Pertama}
\label{tab:diff-twinkle-model1} \\
    \Xhline{1.2pt}
\thead{No}  & \thead{Pitch\\ Result}& \thead{Dist}  & \thead{Match}
            & \thead{Diff1}         & \thead{Diff2} & \thead{Len\_\\ match}
            & \thead{len\_\\ diff1} & \thead{len\_\\ diff2} & \thead{\%}\\
    \Xhline{0.8pt}
1   & [0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58] 
    & 2     & [0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58] 
    & [ ]   & [ ]       & 14    & 0 & 0 & 100.00    \\
    \hline
2   & [0, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57] 
    & 521   & [0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57] 
    & [58]  & [44, 45]  & 13    & 1     & 2     & 71.43             \\
        \hline
3   & [0, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59] 
    & 550   & [0, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58] 
    & [46, 47] & [59]   & 12    & 2     & 1     & 64.29              \\
        \hline
4   & [0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55] 
    & 637   & [0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55] 
    & [56, 57, 58] 
    & [ ]   & 11        & 3     & 0     & 57.14                     \\
    \Xhline{1.2pt}
    \end{xltabular}
\endgroup

\lipsum[2]
\end{document}

笔记\small:字体大小可以通过命令或\footnotesize和缩小到预定义大小,或通过命令、或和\tiny增大到预定义大小。除这些大小外,您还可以通过命令 定义(自己的)字体大小。\large\Large\huge\Huge\fontsize{<font size>}{<baseline size>}\selectfont

提到的命令是开关(而不是您在文档示例中错误使用的环境),因此在它之后使用的字体会发生变化,直到您通过命令返回正常字体大小\normalsize或到组的末尾,您可以在其中更改字体大小,如上面的 MWE(最小工作示例)中所做的那样。

相关内容