我正在尝试构建一个表格,其中列交替均匀分布,并且每个第二列与小数点对齐。
通过谷歌搜索,我找到了以下代码:
\usepackage{tabularx}
\usepackage{dcolumn}
\newcolumntype{d}[1]{D{.}{\cdot}{#1} }
\usepackage{array,booktabs,makecell}
\renewcommand\theadalign{cc}% centred tabular headers
\begin{table}
\caption{\label{tab1}Table 1}
\begin{tabularx}{\textwidth}{|X|d{2}||X|d{2}||X|d{2}|}
\hline
\thead{\textit{Country}} & \thead{\textit{Weight}} & \thead{\textit{Country}} & \thead{\textit{Weight}} & \thead{\textit{Country}} & \thead{\textit{Weight}} \\
\hline
\hline
\textbf{Belgium} & $ 2.92 $ & \textbf{Croatia} & $ 0.39 $ & \textbf{Poland} & $ 3.63 $ \\
\hline
\textbf{Bulgaria} & $ 0.32 $ & \textbf{Italy} & $ 12.39 $ & \textbf{Portugal} & $ 1.19 $ \\
\hline
\textbf{Czech Rep.} & $ 1.94 $ & \textbf{Cyprus} & $ 0.08 $ & \textbf{Romania} & $ 1.01 $ \\
\hline
\textbf{Denmark} & $ 1.88 $ & \textbf{Latvia} & $ 0.11 $ & \textbf{Slovenia} & $ 0.37 $ \\
\hline
\textbf{Germany} & $ 27.18 $ & \textbf{Lithuania} & $ 0.16 $ & \textbf{Slovakia} & $ 0.65 $ \\
\hline
\textbf{Estonia} & $ 0.13 $ & \textbf{Luxembourg} & $ 0.14 $ & \textbf{Finland} & $ 1.63 $ \\
\hline
\textbf{Ireland} & $ 1.77 $ & \textbf{Hungary} & $ 1.06 $ & \textbf{Sweden} & $ 3.09 $ \\
\hline
\textbf{Greece} & $ 1.08 $ & \textbf{Malta} & $ 0.04 $ & \textbf{UK} & $ 11.88 $ \\
\hline
\textbf{Spain} & $ 6.66 $ & \textbf{Netherlands} & $ 3.97 $ & \textbf{EA19} & $ 74.80 $ \\
\hline
\textbf{France} & $ 11.61 $ & \textbf{Austria} & $ 2.72 $ & \textbf{EU28} & $ 100.00 $ \\
\hline
\end{tabularx}
\end{table}
但是,使用此代码我得到了这个:
所以我有两个问题:1) 由于某种原因,“权重”列太大,右侧有多余的空间 2) “国家/地区”列中的一些文本对于单元格的大小来说太大。这是因为页面大小吗?
谢谢!
答案1
请阅读https://www.inf.ethz.ch/personal/markusp/teaching/guides/guide-tables.pdf或者看看漂亮的表格样本
关于问题2:
通过使用X
列,列的宽度被选择为适合文档的可用文本宽度。通常情况下,LaTeX 会将所有太长的文本连字符化,但对于国家名称似乎需要一点帮助,您可以使用 提供可选的连字符点Luxem\-bourg
。
\documentclass{article}
\usepackage{tabularx}
\usepackage{dcolumn}
\newcolumntype{d}[1]{D{.}{\cdot}{#1} }
\usepackage{array,booktabs,makecell}
\renewcommand\theadalign{cc}% centred tabular headers
\begin{document}
\begin{table}
\caption{\label{tab1}Table 1}
\begin{tabularx}{\textwidth}{|X|d{2}||X|d{2}||X|d{2}|}
\hline
\thead{\textit{Country}} & \thead{\textit{Weight}} & \thead{\textit{Country}} & \thead{\textit{Weight}} & \thead{\textit{Country}} & \thead{\textit{Weight}} \\
\hline
\hline
\textbf{Belgium} & $ 2.92 $ & \textbf{Croatia} & $ 0.39 $ & \textbf{Poland} & $ 3.63 $ \\
\hline
\textbf{Bulgaria} & $ 0.32 $ & \textbf{Italy} & $ 12.39 $ & \textbf{Portugal} & $ 1.19 $ \\
\hline
\textbf{Czech Rep.} & $ 1.94 $ & \textbf{Cyprus} & $ 0.08 $ & \textbf{Romania} & $ 1.01 $ \\
\hline
\textbf{Denmark} & $ 1.88 $ & \textbf{Latvia} & $ 0.11 $ & \textbf{Slovenia} & $ 0.37 $ \\
\hline
\textbf{Germany} & $ 27.18 $ & \textbf{Lithuania} & $ 0.16 $ & \textbf{Slovakia} & $ 0.65 $ \\
\hline
\textbf{Estonia} & $ 0.13 $ & \textbf{Luxem\-bourg} & $ 0.14 $ & \textbf{Finland} & $ 1.63 $ \\
\hline
\textbf{Ireland} & $ 1.77 $ & \textbf{Hungary} & $ 1.06 $ & \textbf{Sweden} & $ 3.09 $ \\
\hline
\textbf{Greece} & $ 1.08 $ & \textbf{Malta} & $ 0.04 $ & \textbf{UK} & $ 11.88 $ \\
\hline
\textbf{Spain} & $ 6.66 $ & \textbf{Nether\-lands} & $ 3.97 $ & \textbf{EA19} & $ 74.80 $ \\
\hline
\textbf{France} & $ 11.61 $ & \textbf{Austria} & $ 2.72 $ & \textbf{EU28} & $ 100.00 $ \\
\hline
\end{tabularx}
\end{table}
\end{document}
我的建议:
\documentclass{article}
\usepackage{tabularx}
\usepackage{siunitx}
\usepackage{booktabs}
\renewcommand{\arraystretch}{1.3}
\setlength{\tabcolsep}{5pt}
\usepackage{caption}
\captionsetup[table]{skip=5pt}
\begin{document}
\begin{table}
\caption{\label{tab1}Table 1}
\begin{tabularx}{\textwidth}{@{}*{3}{XS[table-format=3.2]@{\extracolsep{8pt}}}}
\toprule
Country & {Weight} & Country & {Weight} & Country & {Weight}\\
\cmidrule{1-2}\cmidrule{3-4}\cmidrule{5-6}
Belgium & 2.92 & Croatia & 0.39 & Poland & 3.63\\
Bulgaria & 0.32 & Italy & 12.39 & Portugal & 1.19\\
Czech Rep. & 1.94 & Cyprus & 0.08 & Romania & 1.01\\
Denmark & 1.88 & Latvia & 0.11 & Slovenia & 0.37\\
Germany & 27.18 & Lithuania & 0.16 & Slovakia & 0.65\\
Estonia & 0.13 & Luxembourg & 0.14 & Finland & 1.63\\
Ireland & 1.77 & Hungary & 1.06 & Sweden & 3.09\\
Greece & 1.08 & Malta & 0.04 & UK & 11.88\\
Spain & 6.66 & Netherlands& 3.97 & EA19 & 74.80\\
France & 11.61 & Austria & 2.72 & EU28 & 100.00\\
\bottomrule
\end{tabularx}
\end{table}
\end{document}
答案2
看看以下(看起来更专业:-))的表格是否可以接受:
\usepackage[skip=1ex]{caption}
\usepackage{booktabs,makecell,tabularx}
\renewcommand\theadfont{\normalfont\itshape}
\newcommand\mch[1]{\multicolumn{1}{>{\centering}X}{\normalfont\itshape #1}}
\usepackage{siunitx}
\usepackage{array,booktabs,makecell}
\renewcommand\theadalign{cc}% centred tabular headers
\usepackage{showframe}% only for this MWE, remove in real document
\renewcommand*\ShowFrameColor{\color{green}}
\begin{document}
\begin{table}
\caption{Table 1}
\label{tab1}
\begin{tabularx}{\textwidth}{*{3}{>{\bfseries}l S[table-format=3.2]}}
\toprule
\thead[l]{Country} & \mch{Weight} & \thead[l]{Country}
& \mch{Weight} & \thead[l]{Country} & \mch{Weight} \\
\cmidrule(r){1-2}\cmidrule(lr){3-4}\cmidrule(l){5-6}
Belgium & 2.92 & Croatia & 0.39 & Poland & 3.63 \\
Bulgaria & 0.32 & Italy & 12.39 & Portugal & 1.19 \\
\addlinespace
Czech Rep. & 1.94 & Cyprus & 0.08 & Romania & 1.01 \\
Denmark & 1.88 & Latvia & 0.11 & Slovenia & 0.37 \\
\addlinespace
Germany & 27.18 & Lithuania & 0.16 & Slovakia & 0.65 \\
Estonia & 0.13 & Luxembourg & 0.14 & Finland & 1.63 \\
\addlinespace
Ireland & 1.77 & Hungary & 1.06 & Sweden & 3.09 \\
Greece & 1.08 & Malta & 0.04 & UK & 11.88 \\
\addlinespace
Spain & 6.66 & Netherlands & 3.97 & EA19 & 74.80 \\
France & 11.61 & Austria & 2.72 & EU28 & 100.00 \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}
如您所见,除了新的表格布局外,代码也得到了简化,在表格中您不需要对任何单词进行连字符连接。而且它完全适合文本宽度。
编辑:
按照建议萨姆卡特我更改了国家/地区列标题的对齐方式,还midrule
用cmidrule
粗体替换了左侧的州名(无论如何,我宁愿使用正常字体)。要将它们更改为正常字体,只需>{\bfseries}
在l
列类型之前删除:
\begin{tabularx}{\textwidth}{*{3}{l S[table-format=3.2]}}
你就得到了。如果你有时间,请看看:[如何设计漂亮的表格]。2