如何使用多列和长表自动换行?

如何使用多列和长表自动换行?

如何自动换行longtable?下面是我的代码,它不换行。另外,如何减小字体大小?

\documentclass{article}
\usepackage{longtable}
\usepackage{tabularx}

\begin{document}{
\begin{longtable}{ccc}
\caption{Self-learning capability in literature}  
\label{tab:self_learning_table} \\
\hline  \multicolumn{1}{c}{\textbf{Literature}} & \multicolumn{1}{c}{\textbf{Application}} & \multicolumn{1}{c}{\textbf{Algorithm}} \\ \hline 
\endfirsthead

\multicolumn{3}{c}%
{{\bfseries \tablename\ \thetable{} -- continued from previous page}} \\
\hline \multicolumn{1}{c}{\textbf{Literature}} & \multicolumn{1}{c} 
{\textbf{Application}} & \multicolumn{1}{c}{\textbf{Algorithm}} \\ \hline 
\endhead

\endfoot

\endlastfoot

1 &  \makecell{Process control} &  \makecell{Analytical solution, Fuzzy neural network12222222222222222222222222222222}\\ \hline


\end{longtable}}
\end{document}

答案1

基本 LaTeX 列类型cl并且r不会在其中换行文本。为了换行文本,您需要使用p{...}列规范,该规范采用明确的列宽。

使用该array包,可以轻松创建一个新的列类型,该列类型会创建一个换行居中的列(尽管最好避免居中换行文本;如果您的文本足够长而需要换行,则可能应该仅使用一p列进行左对齐。

这是您的文档,其中C定义了一种新的列类型,要求最大宽度,但内部文本居中。我还展示了带有纯色p列的同一张表格,我认为这是此类文本的首选格式。

如果您不使用longtable环境,您可以使用tabularx包来使用列,这些列是固定总宽度表中的X自调整列。p

我已从\makecell您的示例文档中删除了该宏,因为该宏未定义并且似乎与此不相关。

至于更改字体大小,如果您打算对表格中的文本进行此操作以使其适合,这几乎总是一个坏主意。相反,您应该找到使列变窄的方法,或者如果表格很宽,则将其放在横向页面中。

\documentclass{article}
\usepackage{longtable}
\usepackage{array}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\begin{document}
\begin{longtable}{cC{1in}C{2in}}
\caption{Self-learning capability in literature}  
\label{tab:self_learning_table} \\
\hline  \multicolumn{1}{c}{\textbf{Literature}} & \multicolumn{1}{c}{\textbf{Application}} & \multicolumn{1}{c}{\textbf{Algorithm}} \\ \hline 
\endfirsthead

\multicolumn{3}{c}%
{{\bfseries \tablename\ \thetable{} -- continued from previous page}} \\
\hline \multicolumn{1}{c}{\textbf{Literature}} & \multicolumn{1}{c} 
{\textbf{Application}} & \multicolumn{1}{c}{\textbf{Algorithm}} \\ \hline 
\endhead

\endfoot

\endlastfoot

1 & Process control &  Analytical solution, Fuzzy neural network with some words that can be wrapped\\ \hline


\end{longtable}

\begin{longtable}{cC{1in}p{2in}}
\caption{Self-learning capability in literature}  
\label{tab:self_learning_table} \\
\hline  \multicolumn{1}{c}{\textbf{Literature}} & \multicolumn{1}{c}{\textbf{Application}} & \multicolumn{1}{c}{\textbf{Algorithm}} \\ \hline 
\endfirsthead

\multicolumn{3}{c}%
{{\bfseries \tablename\ \thetable{} -- continued from previous page}} \\
\hline \multicolumn{1}{c}{\textbf{Literature}} & \multicolumn{1}{c} 
{\textbf{Application}} & \multicolumn{1}{c}{\textbf{Algorithm}} \\ \hline 
\endhead

\endfoot

\endlastfoot

1 & Process control &  Analytical solution, Fuzzy neural network with some words that can be wrapped\\ \hline


\end{longtable}

\end{document}

代码输出

答案2

longtable最好使用而不是xltabular,它是longtabletabularx包的组合,其中最后一列使用X列类型。

另一种可能性是使用 noveltabularray包。使用它,表代码会更短更简单:

\documentclass{article}
\usepackage{tabularray}

\usepackage{lipsum}

\begin{document}
\begin{longtblr}[
caption = {Self-learning capability in literature},
  label = {tab:self_learning_table} 
                ]{hlines, vlines,
                  colspec={ll X[l]},
                  row{1} ={font=\bfseries, c},
                  rowhead=1
                  }
Literature  
    &   Application         &   Algorithm           \\ 
1   & {Process\\ control}   &   \lipsum[1][1-2]     \\
2   & some text             &   \lipsum[1][3-5]     \\
\end{longtblr}
\end{document}

在此处输入图片描述

booktabs或包(称为库)的宽度组合tabularray,没有垂直线,只有包中定义的必要的水平规则booktabs

在此处输入图片描述

\documentclass{article}
\usepackage{tabularray}
\UseTblrLibrary{booktabs}

\usepackage{lipsum}

\begin{document}
\begin{longtblr}[
caption = {Self-learning capability in literature},
  label = {tab:self_learning_table} 
                ]{colspec={@{} cl X[l] @{}},
                  row{1} ={font=\bfseries, c},
                  rowhead=1
                  }
    \toprule
Literature  
    &   Application         &   Algorithm           \\
    \midrule 
1   & {Process\\ control}   &   \lipsum[1][1-2]     \\
2   & some text             &   \lipsum[1][3-5]     \\
    \bottomrule
\end{longtblr}
\end{document}

相关内容