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