我在使用表格时遇到了问题。此代码需要哪些软件包?我正在使用 overleaf,并且不熟悉 LaTeX。非常期待您的帮助!!!谢谢~
\begin{spacing}{1.1}
\begin{longtable}{p{.1\textwidth}p{.7\textwidth}m{.3\textwidth}}
\caption{description}
\label{table1}
\toprule
\multicolumn{1}{m{1.5cm}}{\centering Symbol} & \multicolumn{1}{m{6cm}}{\centering Definition} & \multicolumn{1}{m{2cm}}{ Unit} \\
\midrule
$V$ & index & -- \\
$X$ & The & -- \\
$Y$ & The & -- \\
$Z$ & The & -- \\
\bottomrule
\end{longtable}
\end{spacing}
\end{center}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 更新为什么我的新代码会使我的子部分和表格位于两个不同的页面吗?
\subsection{Notations}
\begin{xltabular}{\textwidth}{lXl}
\caption{description}
\label{table1}\\
\toprule
Symbol & Definition & Unit \\
\midrule
$V$ & index & -- \\
$X$ & The & -- \\
$Y$ & The & -- \\
$Z$ & The & -- \\
\bottomrule
\end{xltabular}
答案1
请每个问题提出一个问题!以下答案仅处理表格问题。
在您的代码片段中,您使用了longtable
。它适用于长度超过一页的表格。您的表格是这样的吗?让我们考虑一下这种情况……
\documentclass{article}
\usepackage{booktabs, longtable, makecell}
\renewcommand\theadfont{\small\bfseries}
\renewcommand\theadgape{}
\usepackage[skip=1ex, label font=bf]{caption}
%---------------- 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
\begin{document}
\lipsum[1-4]
\begin{longtable}{p{\dimexpr0.15\textwidth-2\tabcolsep}
p{\dimexpr0.65\textwidth-2\tabcolsep}
p{\dimexpr0.2\textwidth-2\tabcolsep}}
\caption{description}
\label{table1} \\
\toprule
\thead{Symbol} & \thead{Definition} & \thead{Unit} \\
\midrule
\endfirsthead
\caption[]{Description (cont.)} \\
\toprule
\thead{Symbol} & \thead{Definition} & \thead{Unit} \\
\midrule
\endhead
\midrule
\multicolumn{3}{r}{\footnotesize\textit{continue on the next page}}
\endfoot
\bottomrule
\endlastfoot
% multi page table body
$V$ & index & -- \\
$X$ & The & -- \\
$Y$ & The & -- \\
$Z$ & The & -- \\
\end{longtable}
\end{document}
在上面的 MWE(最小工作示例)中,我仅限于表格。在其中
- 在第一页和所有其他页面上定义了表格标题,除最后一页外,所有表脚上均注明表格在下一页继续
- 在列宽计算中考虑了表格内容和列边框之间的空间,因此表格宽度等于文本宽度
- 对于列标题,使用包
thead
中的命令makecell
该 MWE 给出:
(红线表示页面布局)
如果表格可以放在一页中,那么您longtable
可以使用普通的tabular
或tabularx
。请提供有关表格的更多信息!
答案2
为了让代码可编译,您需要以下 4 个包:longtable
、setspace
和。您还必须在命令后添加一个。在下面的示例中,我还删除了环境array
,因为长表会自动居中,因为它们适合文本宽度。您也可以用替换命令。booktabs
\\
\label
center
\multicolumn{1}{m...}{\centering ...}
\multicolumn{1}{c}{...}
不幸的是,您的表格不符合这个前提,因为 0.1 + 0.7 + 0.3 加起来大于 1,并且没有考虑表格列之间的小水平空白。我已使用该showframe
包对此进行了可视化。您在以下屏幕截图中看到的红线显示了文本宽度和边距。
因此,我建议采用一种略有不同的方法,该方法基于xltabular
可以自动适应文本宽度(或其他给定长度)的包。以下 MWE 中也显示了此方法:
\documentclass{article}
\usepackage{longtable} % used only for first table: longtable environment
\usepackage{setspace} % used only for first table: spacing environment
\usepackage{array} % used only for first table: m column type
\usepackage{booktabs} % used for boh tables: \toprule, \midrule \bottomrule
\usepackage{xltabular} % usd only for second table: xltabular environment
%%%%%%%%%% used to visualize the textwidth and borders with red lines.
%%%%%%%%%% Do not use in actual document!
\usepackage{showframe}
\renewcommand*\ShowFrameColor{\color{red}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
%\begin{center} %<-------- removed since longtables are automatically centered
\begin{spacing}{1.1}
\begin{longtable}{p{.1\textwidth}p{.7\textwidth}m{.3\textwidth}}
\caption{description}
\label{table1}\\ %<-------- addad a \\ here
\toprule
\multicolumn{1}{c}{Symbol} & \multicolumn{1}{c}{Definition} & \multicolumn{1}{c}{Unit} \\
\midrule
$V$ & index & -- \\
$X$ & The & -- \\
$Y$ & The & -- \\
$Z$ & The & -- \\
\bottomrule
\end{longtable}
\end{spacing}
%\end{center}
\begin{xltabular}{\textwidth}{lXl}
\caption{description}
\label{table1}\\
\toprule
Symbol & Definition & Unit \\
\midrule
$V$ & index & -- \\
$X$ & The & -- \\
$Y$ & The & -- \\
$Z$ & The & -- \\
\bottomrule
\end{xltabular}
\end{document}