文本对于单元格来说太长了?

文本对于单元格来说太长了?

我正在制作这个表格,但我的短语超出了单元格的限制。我怎样才能将它们调整为两行或三行而不是一行?

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}  
\usepackage{rotfloat}
\usepackage{multirow}
\begin{document}

\begin{sidewaystable}
    \begin{tabular}{|p{5cm}|p{1.2cm}|p{1.2cm}|p{1.7cm}|p{1.7cm}|p{1.2cm}|p{1.2cm}|p{1.2cm}|p{1.7cm}|p{1.7cm}|p{1.2cm}|}
        \hline
        \multirow{3}{*}{University} & \multicolumn{4}{c|}{Year 1996} &  \multirow{3}{*}{Total}  & \multicolumn{4}{c|}{Year 2010} & \multirow{3}{*}{Total} \\
        \cline{2-5} \cline{7-10}
        & \multicolumn{2}{c|}{Students} & \multirow{2}{*}{Docentes universitarios} & \multirow{2}{*}{Personal administrativo y de servicio} &  & \multicolumn{2}{c|}{Students} & \multirow{2}{*}{Docente universitario} & \multirow{2}{*}{Personal administrativo y de servicio}&  \\
        \cline{2-3} \cline{7-8}
        & Pre grade & Post grade &  &  &  & Pre grade & Post grade &  & &  \\
        \hline
        National University & 3225 & 268 & 453 & 498 & 4434 & 4903 &976 & 445 & 802 & 7126 \\
   \hline

    \end{tabular}

    \end{sidewaystable}
\end{document} 

由于我正在使用\multirow{...}|p{Xcm}|,单词没有居中,我该如何解决这个问题?

答案1

这样可以尽可能接近您的原始表格。我不建议这样做,但它确实有效。我调整了文本块高度以使其适合,因为我假设它适合您的实际页面。我还伪造了连字符,因为我不确定要告诉 Babel 哪种语言。(显然,您应该删除我的连字符点,让 Babel 在您的真实文档中发挥作用。)

\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}

定义一种新的列类型,C{<width>}与 类似p但居中。如果您还想垂直居中,请m替换p

\renewcommand\multirowsetup{\centering}

\multirow这会将 的内容的默认格式从 更改\raggedright\centering

代码:

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[scale=.825]{geometry}% without this you'll get US letter paper layout on A4
\usepackage{rotfloat,array}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\usepackage{multirow}
\renewcommand\multirowsetup{\centering}
\begin{document}
\begin{sidewaystable}
\begin{tabular}{|C{5cm}|C{1.2cm}|C{1.2cm}|C{1.7cm}|C{1.7cm}|C{1.2cm}|C{1.2cm}|C{1.2cm}|C{1.7cm}|C{1.7cm}|C{1.2cm}|}
  \hline
  \multirow{6}{*}{University} & \multicolumn{4}{c|}{Year 1996} &  \multirow{6}{*}{Total}  & \multicolumn{4}{c|}{Year 2010} & \multirow{6}{*}{Total} \\
  \cline{2-5} \cline{7-10}
  & \multicolumn{2}{c|}{Students} & \multirow{5}{1.7cm}{Docentes universit\-arios} & \multirow{5}{1.7cm}{Personal administrativo y de servicio} &  & \multicolumn{2}{c|}{Students} & \multirow{5}{1.7cm}{Docente universit\-ario} & \multirow{5}{1.7cm}{Personal administrativo y de servicio}&  \\
  \cline{2-3} \cline{7-8}
  & \multirow{3}{12mm}{Pre grade} & \multirow{3}{12mm}{Post grade} &  &  &  & \multirow{3}{12mm}{Pre grade} & \multirow{3}{12mm}{Post grade} &  & &  \\
  &&&&&&&&&&\\
  &&&&&&&&&&\\
  &&&&&&&&&&\\
  \hline
  National University & 3225 & 268 & 453 & 498 & 4434 & 4903 &976 & 445 & 802 & 7126 \\
  \hline
\end{tabular}
\end{sidewaystable}
\end{document}

调整表

但是,这并不是设置表格内容的最佳方式。特别是,不建议使用垂直线,并且一些水平线应该比其他的更粗。此外,需要更多的间距,以便单元格内容看起来不会挤压并且更易于阅读。

书签很好地讨论了排版专业质量表格材料的最佳实践。值得一读。即使它有时可能有点过于教条,但它是文字处理器所鼓励的那种格式的非常有用的解毒剂!

我会考虑更多这样的事情:

重新思考餐桌

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[scale=.825]{geometry}% without this you'll get US letter paper layout on A4
\usepackage{rotfloat,array,calc,booktabs}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\usepackage{multirow}
\renewcommand\multirowsetup{\centering}
\newlength\mylength
\setlength\mylength{20mm+\tabcolsep}
\begin{document}
\begin{sidewaystable}
  \begin{tabular}{C{5cm}*{4}{C{10mm}}*{2}{C{15mm}}*{2}{C{22.5mm}}*{2}{C{10mm}}}
  \toprule
  \multirow{3}*{University} & \multicolumn{4}{c}{Students} & \multicolumn{2}{c}{Docentes} & \multicolumn{2}{c}{Personal administrativo} &  \multicolumn{2}{c}{\multirow{2}{\mylength}{Total}}  \\
  & \multicolumn{2}{c}{Pre grade} & \multicolumn{2}{c}{Post grade} & \multicolumn{2}{c}{universitarios} & \multicolumn{2}{c}{y de servicio} &&\\
  \cmidrule(lr){2-3}\cmidrule(lr){4-5} \cmidrule(lr){6-7} \cmidrule(lr){8-9} \cmidrule(lr){10-11}
  & 1996 & 2010  & 1996 & 2010  & 1996 & 2010 & 1996 & 2010 & 1996 & 2010  \\
  \midrule
  National University & 3225 & 268 & 453 & 498 & 4434 & 4903 &976 & 445 & 802 & 7126 \\
  \bottomrule
\end{tabular}
\end{sidewaystable}
\end{document}

答案2

我提出了这个解决方案,基于一个makecell包,它允许在单元格中换行,并且booktabs

    \documentclass{article}
    \usepackage{rotating}
    \usepackage{booktabs, array, multirow, caption, makecell, tabularx}
 \renewcommand{\tabularxcolumn}[1]{ >{\centering\arraybackslash}p{#1}}
\setcellgapes{1pt}
\usepackage[showframe]{geometry}

    \begin{document}

\begin{sidewaystable}
\renewcommand\tabcolsep{4pt}
\makegapedcells
\renewcommand\theadalign{bc}\small
\begin{tabularx}{\textheight}{p{2.8cm}cc > {}XXcccXXc}
    & \multicolumn{4}{c}{Year 1996} & & \multicolumn{4}{c}{Year 2010} & \\
    \cmidrule[\heavyrulewidth](lr){2-5} \cmidrule[\heavyrulewidth](lr){7-10}
  & \multicolumn{2}{c}{Students} & && & \multicolumn{2}{c}{Students} & & & \\
    \cmidrule(lr){2-3} \cmidrule(lr){7-8}
    \textbf{University} & \makecell{Pre\\ grade} & \makecell{Post\\ grade} &\makecell{Docentes\\ universitarios} & \multirowcell{-3}[-1.4ex]{Personal \\administrativo\\ y de servicio} & \textbf{Total} & \makecell{Pre\\ grade} & \makecell{Post\\ grade} & \makecell{Docente \\universitario} & \multirowcell{-3}[-1.4ex]{Personal\\ administrativo\\ y de servicio} & \textbf{Total} \\
    \midrule[\heavyrulewidth]
    National University & 3225 & 268 & 453 & 498 & 4434 & 4903 &976 & 445 & 802 & 7126 \\
\end{tabularx}
\end{sidewaystable}

    \end{document} 

在此处输入图片描述

相关内容