对于第一列,我希望标题单元格居中,但其他行左对齐,并在其前留出一些空间。如何实现?我可以为表格中多行的同一列定义不同的间距吗?使用的LaTeX
列宽规范不应受到干扰。\hsize
tabularx
\documentclass[conference]{IEEEtran}
\usepackage{tabularx}
\usepackage{booktabs}
\renewcommand{\tabularxcolumn}[1]{m{#1}}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\begin{document}
\begin{table}[!h]
\renewcommand{\arraystretch}{1.3}
\caption{Comparison of Algorithm Results}
\centering
\begin{tabularx}{\columnwidth}
{ @{\hspace{.2em}} >{\hsize=1.5\hsize}L *{4}{>{\hsize=0.875\hsize}C} @{} }
\toprule
\centering\arraybackslash\textbf{Optimization Algorithm} & \textbf{Swarm Size} & \textbf{No. of Iterations} & \textbf{Final Wirelength} & \textbf{Best Value Cost Fn.}\\
\midrule
\hspace{.5em} Short Text & 10 & 1000 & 100 & -- \\
\hspace{.5em} Slightly Longer Text that Wraps & 20 & 2000 & 200 & 10.5 \\
\hspace{.5em} Slightly Longer Text that Wraps & 30 & 3000 & 300 & 20.55 \\
\hspace{.5em} Short & 40 & 4000 & 400 & 30.5 \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}
编辑:因为我的问题被误解了,所以我要重申一下,我想要的是一些替代方案\hspace
在之前增加空间的替代方案每一个段落中的行,以及无缩进第一行。或者缩进所有行如下图所示,我希望所有文本都立即从红线右侧开始。我的问题是文本换行的地方,\hspace
我无法在那里提供帮助。
在文本换行后手动添加空格不是一个可接受的解决方案。我想要自动单元格填充或者段落填充/重塑会影响段落的所有行。
答案1
以下解决方案利用tabularx
环境、S
数据列中的数字的列类型以及X
数据列上方标题单元格的修改后的列类型。它还自动缩进左侧描述符列中的第一行。
\documentclass[conference]{IEEEtran}
\usepackage{tabularx,booktabs,siunitx}
\renewcommand{\tabularxcolumn}[1]{m{#1}}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\newcommand\mC[1]{\multicolumn{1}{>{\hsize=0.875\hsize}C}{#1}} % handy shortcut macro
\begin{document}
\begin{table}[!h]
\renewcommand{\arraystretch}{1.3}
\caption{Comparison of Algorithm Results}
%%\centering % not needed
\begin{tabularx}{\columnwidth}{@{}
>{\hspace{0.75em}\hsize=1.5\hsize}L
S[table-format=2.0]
S[table-format=4.0]
S[table-format=3.0]
S[table-format=2.2] @{}}
\toprule
\multicolumn{1}{@{}>{\hsize=1.5\hsize}C}{\textbf{Optimization Algorithm}} &
\mC{\textbf{Swarm Size}} &
\mC{\textbf{No.\ of Iterations}} &
\mC{\textbf{Final Wirelength}} &
\mC{\textbf{Best Value Cost Fn.}}\\
\midrule
Short Text & 10 & 1000 & 100 & {--} \\
Slightly Longer Text that Wraps & 20 & 2000 & 200 & 10.5 \\
Slightly Longer Text that Wraps & 30 & 3000 & 300 & 20.55\\
Short & 40 & 4000 & 400 & 30.5 \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}
附录以回应原帖作者的后续询问:如果您想要在表格的左边缘填充一定量的空白,则以下代码可能会相关:
\documentclass[conference]{IEEEtran}
\usepackage{tabularx,booktabs,siunitx}
\renewcommand{\tabularxcolumn}[1]{m{#1}}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\newcommand\mC[1]{\multicolumn{1}{>{\hsize=0.875\hsize}C}{#1}} % handy shortcut macro
\begin{document}
\begin{table}[!h]
\renewcommand{\arraystretch}{1.3}
\setlength\tabcolsep{2pt} % default value: 6pt
\caption{Comparison of Algorithm Results}\label{tab:alg_results}
\begin{tabularx}{\columnwidth}{@{\hspace{1.3em}} % choose amount of indentation
>{\hsize=1.5\hsize}L
S[table-format=2.0]
S[table-format=4.0]
S[table-format=3.0]
S[table-format=2.2] @{}}
\toprule
%% disable left-hand padding in first cell via "@{}" particle
\multicolumn{1}{@{}>{\hsize=1.5\hsize}C}{\textbf{Optimization Algorithm}} &
\mC{\textbf{Swarm Size}} &
\mC{\textbf{No.\ of Iterations}} &
\mC{\textbf{Final Wirelength}} &
\mC{\textbf{Best Value Cost Fn.}}\\
\midrule
Short Text & 10 & 1000 & 100 & {--} \\
Slightly Longer Text that Wraps & 20 & 2000 & 200 & 10.5 \\
Slightly Longer Text that Wraps & 30 & 3000 & 300 & 20.55\\
Short & 40 & 4000 & 400 & 30.5 \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}
答案2
\documentclass[conference]{IEEEtran}
\usepackage{siunitx}
\usepackage{booktabs, makecell, tabularx}
\renewcommand\theadfont{\bfseries}
%\renewcommand{\tabularxcolumn}[1]{m{#1}}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\begin{document}
\begin{table}[!h]
\caption{Comparison of Algorithm Results}
\renewcommand{\arraystretch}{1.1}
\setlength\tabcolsep{3pt}
\centering
\begin{tabularx}{\columnwidth}{@{}L S[table-format=2.0]
S[table-format=4.0]
S[table-format=3.0]
S[table-format=2.2]@{}}
\toprule
\thead[b]{Optimization\\ Algorithm}
& {\thead[b]{Swarm\\ Size}}
& {\thead[b]{No. of\\ Iterations}}
& {\thead[b]{Final\\ Wire\\ length}}
& {\thead[b]{Best Value\\ Cost Fn.}} \\
\midrule
Short Text & 10 & 1000 & 100 & {--} \\
Slightly Longer Text that Wraps & 20 & 2000 & 200 & 10.5 \\
Slightly Longer Text that Wraps & 30 & 3000 & 300 & 20.55 \\
Short & 40 & 4000 & 400 & 30.5 \\
\bottomrule
\end{tabularx}
\end{table}
与您的 MWE 相比,上述有两个主要变化:
- 对于列头,使用
\thead
来自makecell
包的宏(已添加到序言中) - 对于数字列,使用
S
来自包的列类型siunitx
(也添加到序言中)
除了这些变化之外,我还减少arraystretch
和删除了对列类型tabcolsep
的更改。X