我查看过以前有关类似问题的查询,但解决方案似乎对我来说不起作用(我对 LaTex 很陌生,所以这可能只是我的问题!)
我正在制作一个表格,希望它适合文档的页面宽度。我尝试过 tabularx 和 tabulary(使用 \textwidth 或 \linewidth),但这似乎只能使表格的行具有正确的宽度,而文本仍然会溢出。任何解决方案都很好!
这是尝试修复宽度问题的当前代码(未经过格式化):
\documentclass{article}
\begin{document}
This is a line of text to show the line width to ensure the table is the correct width on the page
\begin{center}
\begin{tabular}{c|c|c|c|c}
\hline
\multicolumn{4}{c}{Error in Gilson Autopipettes} \\
\hline
Autopipette & Max. Volume ($\mu$ L) & Sytematic Error ($\mu$ L) & Random Error ($\mu$ L) & Max. Error ($\mu$ L) \\
\hline
P10 & 10 & $\pm$ 0.100 & $\leq$ 0.040 & \\
P200 & 200 & $\pm$ 1.60 & $\leq$ 0.30 & \\
P1000 & 1000 & $\pm$ 8 & $\leq$ 1.5 & \\
\hline
\end{tabular}
\end{center}
\end{document}
答案1
像这样?
- 因为
tabularx
您可以规定表格宽度,但是,您需要X
在表格中使用至少一种列类型(或从中衍生的列类型)。否则,表格将具有单元格内容的宽度 - 对于在列中写入数字,我建议使用包
S
中的列siunitx
。使用它,如果数字是整数,则数字将在小数点或右侧对齐 - 对于单位也可以使用
siunitx
包(参见姆韦以下) - 用于写作
- 为了使表格看起来更专业,请勿使用垂直线,对于水平线,请使用
booktabs
包中定义的规则 - 添加的包
lipsum
用于虚拟文本,在实际文档中您应该将其删除,同样有效showframe
,其目的是显示页面布局(上图上的红线)。
\documentclass{article}
\usepackage{booktabs, tabularx}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\newcommand\mcx[1]{\multicolumn{1}{C}{#1}}
\usepackage{siunitx}
\usepackage{lipsum}
%-------------------------------- show page layout, only for test
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\begin{document}
\lipsum[11]
\begin{center}
\begin{tabularx}{\linewidth}{X S >{\pm}S >{\pm}S S}
\toprule
& \multicolumn{4}{c}{Error in Gilson Autopipettes} \\
\cmidrule(lr){2-5}
\mcx{Autopipette}
& \mcx{Max. Volume (\si{\micro\liter})}
& \mcx{Sytematic Error (\si{\micro\liter})}
& \mcx{Random Error (\si{\micro\liter})}
& \mcx{Max. Error (\si{\micro\liter})} \\
\midrule
P10 & 10 & 0.100 & 0.040 & \\
P200 & 200 & 1.60 & 0.30 & \\
P1000 & 1000 & 8 & 1.5 & \\
\bottomrule
\end{tabularx}
\end{center}
\end{document}
编辑:
\multicolumn
对于较短的代码,您可以定义新的命令,类似于上面的定义姆韦,对于单位\micro\liter
(如建议伯纳德在下面的评论中:
在序言中,之后\usepackage{siunitx}
:\newcomand{\ul}{\micro\liter}
并在表中使用:
\mcx{Autopipette}
& \mcx{Max. Volume (\si{\uL})}
& \mcx{Sytematic Error (\si{\uL})}
& \mcx{Random Error (\si{\uL})}
& \mcx{Max. Error (\si{\uL})} \\