我需要知道如何在 MWE 中换行。我已经看过一些关于此问题的回答。但这只会让我更加困惑。我是 Latex 的初学者。我需要在 A4 文档的 A3 页中提供表格。我还没有在 MWE 中添加它。MWE 是:
\documentclass[12pt]{report}
\usepackage{float}
\begin{document}
\begin{table}[H]
\centering
\caption{Indirect Include Dependency for Sched Module}
\begin{tabular}{|l|l|l|l|l|l|l|l|l|}
\hline
\textbf{Modules} & \textbf{sched.h} & \textbf{completion.h} & \textbf{cpu.h} & \textbf{cpuidle.h} & \textbf{kernel\_stat.h} & \textbf{swait.h} & \textbf{wait.h} & \textbf{Total} \\ \hline
arch & 984 & 15 & 214 & 20 & 106 & 1 & 49 & \textbf{1 389} \\ \hline
block & 1 & 2 & 3 & & 1 & & 1 & \textbf{8} \\ \hline
\end{tabular}
\end{table}
\end{document}
答案1
我建议您将环境内的字体大小更改table
为\footnotesize
并使用tabular*
环境而不是环境tabular
,以确保表格占据文本块的宽度。我会使用c
列类型来表示 8 个数据列,并且我将不是使用大胆的在标题行中。最后,通过删除所有垂直线并使用较少但间距适当的水平线,使表格看起来更加开放。
\documentclass[12pt,a4paper]{report}
\usepackage{booktabs,caption}
\begin{document}
\begin{table}
\captionsetup{font=small,skip=0.25\baselineskip}
\caption{Indirect Include Dependency for Sched Module}
\footnotesize
\setlength\tabcolsep{0pt} % let LaTeX figure out intercolumn whitespace
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} l *{8}{c} }
\toprule
Modules & sched.h & completion.h & cpu.h & cpuidle.h &
kernel\_stat.h & swait.h & wait.h & Total \\
\midrule
arch & 984 & 15 & 214 & 20 & 106 & 1 & 49 & \textbf{1 389} \\
%\hline
block & 1 & 2 & 3 & & 1 & & 1 & \textbf{8} \\
\bottomrule
\end{tabular*}
\end{table}
\end{document}
答案2
根据你编译的 MWE,我假设你的意思是你希望表格适合一页,因为它现在实际上并没有这样做,而且列中没有任何需要换行的实际文本(例如多个单词或一个句子或类似的东西)。在这种情况下,我使用包graphicx
和resizebox{}{}{}
来执行此操作。resizebox
接受参数resizebox{<height>}{<width>}{<box_content>}
,你可以保留纵横比,同时通过给出!
第一个参数和\textwidth
第二个参数(或你想要的任何特定大小)将框调整为文本。基于此,你的 MWE 将是:
\documentclass[12pt]{report}
\usepackage{float}
\usepackage{graphicx}%%Add graphicx
\begin{document}
\begin{table}[!htbp] %%unless you have to specify a position, I find it best to let LaTeX decide
\centering
\caption{Indirect Include Dependency for Sched Module}
\resizebox{\textwidth}{!}{ %%begin resize box
\begin{tabular}{|l|l|l|l|l|l|l|l|l|}
\hline
\textbf{Modules} & \textbf{sched.h} & \textbf{completion.h} &
\textbf{cpu.h} & \textbf{cpuidle.h} & \textbf{kernel\_stat.h} &
\textbf{swait.h} & \textbf{wait.h} & \textbf{Total} \\ \hline
arch & 984 & 15 & 214 & 20 & 106 & 1 & 49 & \textbf{1 389} \\
\hline
block & 1 & 2 & 3 & & 1 & & 1 & \textbf{8} \\ \hline
\end{tabular}
}%%Important to close your box!!
\end{table}
\end{document}
答案3
threeparttable
启用注释,其中解释了较长列标题所用缩写的含义。通过使用缩写,表格中的字体可以保持正常大小。siunitx
列中的数字右对齐但在单元格中居中:
\documentclass[12pt,a4paper]{report}
\usepackage{booktabs,tabularx,threeparttable}
\usepackage{siunitx}
\usepackage{caption}
\usepackage{etoolbox}
\renewcommand{\bfseries}{\fontseries{b}\selectfont} % <--
\robustify\bfseries % <--
\newrobustcmd{\BF}{\bfseries} % <-- schortcut
%-------------------------------- show page layout, only for test
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\begin{document}
\begin{table}
\captionsetup{font=small,skip=0.25\baselineskip}
\sisetup{detect-weight,
mode=text,
group-minimum-digits=4,
}
\begin{threeparttable}[htb]
\caption{Indirect Include Dependency for Sched Module}
\setlength\tabcolsep{3pt}
\begin{tabular*}{\textwidth}{l
@{\extracolsep{\fill}}
S[table-format=3.0]
S[table-format=2.0]
S[table-format=3.0]
S[table-format=2.0]
S[table-format=3.0]
*{2}{S[table-format=2.0]}
S[table-format=4.0]
}
\toprule
Modules & {sched.h} & {comp.\tnote{a}}
& {cpu.h} & {cpuidle.h}
& {k\_s\tnote{b}} & {swait.h }
& {wait.h} & {Total} \\
\midrule
arch & 984 & 15 & 214 & 20 & 106 & 1 & 49 & \BF 1 389 \\
block & 1 & 2 & 3 & & 1 & & 1 & \BF 8 \\
\bottomrule
\end{tabular*}
\begin{tablenotes}[para,flushleft]\small
\item[a] comp.: completion.h;
\item[b] k\_s: kernel\_stat.h.
\end{tablenotes}
\end{threeparttable}
\end{table}
\end{document}