tabularx 具有不同的列宽

tabularx 具有不同的列宽
\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。应尽可能避免使用它,因为它也会改变字体大小并可能产生不可读的文本。除了评论之外,新列类型的命名者选择得不好,因为mb已经被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}

相关内容