![如何使用多列和长表自动换行?](https://linux22.com/image/453562/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E5%A4%9A%E5%88%97%E5%92%8C%E9%95%BF%E8%A1%A8%E8%87%AA%E5%8A%A8%E6%8D%A2%E8%A1%8C%EF%BC%9F.png)
如何自动换行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 列类型c
,l
并且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
,它是longtable
和tabularx
包的组合,其中最后一列使用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}