我希望创建一个表格,但它总是超出页面范围,我尝试使用 tabularx 包,但最终会出现一些错误

我希望创建一个表格,但它总是超出页面范围,我尝试使用 tabularx 包,但最终会出现一些错误
\documentclass[12pt]{article}
\usepackage{gensymb}

\begin{document}

\begin{tabular}{llllll}

Ester & Temperature \degree C & Initial reaction rate/ mmol min g & Melting point of Product \degree C & Conversion of Alcohol (\%) & Conversion of Acid (\%)\\
Cetyl Palmitate & 65-67 & 3.4 & 50-51 & 98 & 99\\
Behenyl Behenate & 85-88 & 2.9 & 69-73 & 99 & 98\\
Dibehenyl adipate & 90-93 & 1.4 & 70-73 & 99 & 99\\
Dibehenyl Sebacate & 88-90 &1.4 &71-74 & 95 & 99   
\end{tabular}

\end{document}

答案1

您必须使用宽列标题。您应该找到使它们更短的方法。可以尝试以下方法(使用\small字体大小、、tabularxmultirow包):makecellbooktabs

\documentclass[12pt]{article}
\usepackage{gensymb}
\usepackage{booktabs, makecell, multirow, tabularx}
\newcolumntype{C}{>{\centering\arraybackslash}X}

%-------------------------------- show page layout, only for test
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%

\begin{document}
    \begin{table}
    \small
\begin{tabularx}{\linewidth}{@{} l CC CC C @{}}
    \toprule
\multirow[t]{3}{*}{Ester}
    & \multirow[t]{3}{=}{\centering    Temp. \degree C}
            & \multirow[t]{3}{=}{\centering    Initial rate (mmol)}
                    & \multirow[t]{3}{=}{\centering    Melting point \degree C}
                            & \multicolumn{2}{c}{Conversion of}     \\
    \cmidrule{5-6}
    &       &       &       & \makecell[t]{Alcohol\\ (\%)}
                                    & \makecell[t]{Acid\\ (\%)}     \\
    \midrule
Cetyl Palmitate     & 65 -- 67 & 3.4   & 50 -- 51 & 98    & 99      \\
Behenyl Behenate    & 85 -- 88 & 2.9   & 69 -- 73 & 99    & 98      \\
Dibehenyl adipate   & 90 -- 93 & 1.4   & 70 -- 73 & 99    & 99      \\
Dibehenyl Sebacate  & 88 -- 90 & 1.4   & 71 -- 74 & 95    & 99      \\
    \bottomrule
\end{tabularx}
    \end{table}
\end{document}

在此处输入图片描述

编辑: 有经验的人会发现latex上述代码是“自我描述的”...但是,你刚刚学习它,它看起来很“神秘”...

  • gensymb用于一些符号\degree(我不熟悉它,出于这样的目的我宁愿使用siunitx
  • booktabs提供水平表格规则(,,,\toprule... ),使表格具有专业外观\midrule\bottomrule
  • makecell有助于创建表格材料的通用布局。它是宏\makecell,可以在表格的单元格中设置多行文本。通过它,我强制单元格的内容分为两行(为了更好看)
  • 包装multirow垂直合并表格单元格
  • tabularx提供列类型X,其宽度由包本身计算。在其单元格中,文本会自动分成更多行(如果它的长度超过单元格宽度)并对齐,但可以使用命令定义新的列类型\newcolumntype{<name>}{<properties>}。例如,您定义其中的中心文本\newcolumntype{C}{>{\centering\arraybackslash}X}单元格。C

有关更多详细信息,我建议您阅读安装中包含的软件包文档latex。如果您有 MikTeX,那么您可以将它们归档到子目录中doc,或者在网上搜索。

相关内容