我正在尝试使表格的宽度等于或小于纸张的宽度,以便表格可以适合纸张。我在下面编写了表格的代码,但它不适合纸张,如下图所示,有什么帮助吗?
我的代码是:
\begin{table}[h]
\begin{tabular}{lllll}
& \textbf{k-generated} & \textbf{generated goal} & \textbf{male} & \textbf{female} \\
\textbf{NONgenerated} & NO & YES & YES & NO \\
\textbf{AUTOMATIC/generated supervising} & NO & YES & YES & YES \\
\textbf{REAL-TIME/generated} & NO & NO & NO & YES \\
\textbf{generated} & NO & NO & NO & YES \\
\textbf{generated LOW} & 0.9 & 0.74 & 0.85 & 0.74 \\
\textbf{generated} & LOW & HIGH & HIGH & LOW
\end{tabular}
\end{table}
答案1
无需调整大小,您可以使用makecell
包并旋转列标题:
\documentclass[12pt]{report}
\usepackage{array, makecell, booktabs, rotating}
\renewcommand\theadfont{\bfseries}
\renewcommand\theadalign{lc}
\begin{document}
Text text text text text text text text text text text text text text text text text
\begin{table}[h]
\renewcommand\cellrotangle{35}
\settowidth{\rotheadsize}{ HIGH }
\centering
\begin{tabular}{*{5}{l}@{}}
\addlinespace[2ex]
& \rothead{\rlap{k-generated}} & \rothead{\rlap{generated goal}} & \rothead{\rlap{male}} & \rothead{\rlap{female}} \\
\midrule[\heavyrulewidth]
\thead{NONgenerated} & NO & YES & YES & NO \\
\thead{AUTOMATIC/ & & & & \\generated supervising} & NO & YES & YES & YES \\
\thead{REAL-TIME/ & & & & \\generated} & NO & NO & NO & YES \\
\thead{generated} & NO & NO & NO & YES \\
\thead{generated LOW} & 0.9 & 0.74 & 0.85 & 0.74 \\
\thead{generated} & LOW & HIGH & HIGH & LOW \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案2
这是我的方法,按照偏好顺序,不减小字体大小,不旋转或缩放文本:
删除不必要的单词或者用更短的单词进行更改或重新设计表格。这在我的 MWE 中没有显示,因为我不明白示例表的含义,但可能所有/大多数单词“generated”都可以删除而不会失去任何含义。
避免使用全部大写的单词但绝对必要,原因有三:(1) 需要更多空间 (2) 普遍认为小写文本更易读。 (3) 大小写混用文本更糟糕。在我看来,看起来很丑。
避免使用粗体字体。粗体字体较大,但一两条水平线足以强调标题。
当某些单元格不可避免地包含过多文本时, 使用
tabulary
或tabularx
环境与同名的包一起使用以保持在文本宽度内和/或使用一些类似p{3cm}
而不是l
、c
或r
列来允许多行单元格(您也可以在中使用它tabular
)。 p 列的长度也可以是相对长度.5\linewidth
。
在我的示例中,只有两个单元格需要两行。不太好。所以重新设计表格时请再三考虑。也许您可以使用“目标”而不是“生成的目标”,并且只在“生成的”标题下使用“自动/监督”,以便只使用一行单元格。
\documentclass[12pt]{article}
\usepackage{tabulary,booktabs}
\begin{document}
\begin{table}[h]
\begin{tabulary}{\linewidth}{LcCcc}
\toprule & k-generated & Generated Goal & Male & Female\\\midrule
Non generated & No & Yes & Yes & No\\
Automatic/generated supervising & No & Yes & Yes & Yes\\
Real-time/generated & No & No & No & Yes\\
Generated & No & No & No & Yes\\
Generated low & 0.9 & 0.74 & 0.85 & 0.74\\
Generated & Low & High & High & Low\\\bottomrule
\end{tabulary}
\end{table}
\end{document}
答案3
重要的提示:调整组件大小看起来不太好看。考虑修改表格本身以使其完全适合页面,或者将字体大小更改为\small
其他合适的大小。
如果您只关心如何调整表格大小以适应页面宽度,则该graphicx
软件包提供了\resizebox
,它可以解决问题。以您的表格为例:
\usepackage{graphicx} % Put in your document's preamble
\begin{table}[h]
\resizebox{\hsize}{!}{
\begin{tabular}{lllll}
& \textbf{k-generated} & \textbf{generated goal} & \textbf{male} & \textbf{female} \\
\textbf{NONgenerated} & NO & YES & YES & NO \\
\textbf{AUTOMATIC/generated supervising} & NO & YES & YES & YES \\
\textbf{REAL-TIME/generated} & NO & NO & NO & YES \\
\textbf{generated} & NO & NO & NO & YES \\
\textbf{generated LOW} & 0.9 & 0.74 & 0.85 & 0.74 \\
\textbf{generated} & LOW & HIGH & HIGH & LOW
\end{tabular}
}
\end{table}
第一个参数\resizebox
是调整大小框的宽度——在本例中是其容器的水平尺寸。第二个参数是高度,但{!}
这里只是指示它自动计算高度以保持纵横比。第三个参数当然是框的内容。
话虽如此,我必须重申:这看起来不太好。换个桌子吧。