\documentclass{article}
\usepackage{tabularx}
\usepackage{lscape}
\newcolumntype{b}{X}
\newcolumntype{s}{>{\hsize=.2\hsize}X}
\newcolumntype{m}{>{\hsize=.4\hsize}X}
\begin{document}
\begin{landscape}
\noindent\resizebox{\textwidth}{!}{%
\begin{tabularx}{\linewidth}{m s s m b}
Variable Name & Years Available & Model(s) & Source & Notes\\
\end{tabularx}
%}
\end{landscape}
\end{document}
编辑:我想使用 tabularx,因为我的“注释”部分中的文本很长,并且我希望文本能够轻松换行。
此外,我有很多行,所以我决定包含 \resizebox 以使所有文本适合一页
答案1
我假设您希望m
列类型宽度应为b
类型宽度的 40 %,s
类型宽度应为m
。您计算系数的方式不正确:和系数应等于列数,并且它们应具有这种比例关系。这样得到的系数按升序近似等于0.45, 0.90, 2.3
。
我不明白为什么你应该使用\resizebox
。应尽可能避免使用它,因为它也会改变字体大小并可能产生不可读的文本。除了评论之外,新列类型的命名者选择得不好,因为m
和b
已经被array
包定义,你迟早会遇到冲突。
\documentclass{article}
\usepackage{tabularx}
\usepackage{lscape}
\newcolumntype{b}{>{\hsize=2.3\hsize}X}
\newcolumntype{s}{>{\hsize=.45\hsize}X}
\newcolumntype{m}{>{\hsize=.9\hsize}X}
\begin{document}
\begin{landscape}
\noindent
\begin{tabularx}{\linewidth}{|m| s| s| m| b|}
\hline
Variable Name & Years Available & Model(s) & Source & Notes \\
\hline
\end{tabularx}
\end{landscape}
\end{document}
答案2
编辑: 作为补充伯纳德回答并延伸我的评论。
将表格大小调整为\textwidth
横向意味着您将表格缩小到\textwidth
纵向页面,因此表格前后将有大量空白空间。
要使表格占据横向的整个宽度,您需要将其调整为\textheight
。但是,这已经通过
\begin{tabularx}{\linewidth}{...}
所以没有必要使用\resizebox
。
似乎(从您的 MWE 得出的结论)将表格设置为正常的纵向页面方向并最终减小表格中的字体大小。如果表格太高,那么您需要考虑ltablex
包装。
关于列宽,请tabularx
参阅我上面的评论:
如果更改 X 列类型的宽度,则新大小的总和必须是整数(在您的例子中不是:m + s + s + m + b = .4 + .2 +.2 + .4 + 1 = 2.2;例如正确值是 .3 + .2 +.2 + .3 + 1 = 2)
考虑到这个规则但使用不同的值,在纵向方向上,表头看起来如下:
\documentclass{article}
\usepackage{tabularx}
\usepackage{geometry}
\usepackage{showframe}
\renewcommand*\ShowFrameColor{\color{red}}
\begin{document}
\noindent
\begin{table}
\setlength\tabcolsep{3pt}
\begin{tabularx}{\linewidth}{|>{\hsize=0.5\hsize}X|
>{\hsize=0.4\hsize}X|
>{\hsize=0.4\hsize}X|
>{\hsize=0.3\hsize}X|
>{\hsize=1.4\hsize}X|}
\hline
Variable Name & Years\newline Available & Model(s) & Source & Notes\\
\hline
\end{tabularx}
\end{table}
\end{document}
在使用包的情况下ltablex
,上面的 MWE 应该扩展为这样的内容:
\documentclass{article}
\usepackage{geometry}
\usepackage{ltablex}
\usepackage{showframe}
\renewcommand*\ShowFrameColor{\color{red}}
\begin{document}
\noindent
{
\setlength\tabcolsep{3pt}
\keepXColumns
\begin{tabularx}{\linewidth}{|>{\hsize=0.5\hsize}X|
>{\hsize=0.4\hsize}X|
>{\hsize=0.4\hsize}X|
>{\hsize=0.3\hsize}X|
>{\hsize=1.4\hsize}X|}
\caption{my table}
\label{my huge tablew} \\
\hline
Variable Name & Years\newline Available & Model(s) & Source & Notes\\
\hline
\endfirsthead
\hline
Variable Name & Years\newline Available & Model(s) & Source & Notes\\
\hline
\endhead
\hline
\multicolumn{5}{r}{continue on the next page}
\endfoot
\hline
\endlastfoot
% table content
a & b & c & d & \\
a & b & c & d &
\end{tabularx}
}
\end{document}
在 MWE 上方,您还可以在横向模式下使用。在这种情况下,您需要将表格(在 MWE 上方表格周围的花括号内)括起来\begin{landscape} ... \end{landscape}