如何用xltabular设置表格列宽:第1列自适应,2-5列等宽
调整LaTeX表格列宽的方案
要实现第1列自适应最长文本宽度、第2-5列固定且宽度一致的需求,可按以下步骤修改代码:
- 修正包引用:补全所有
usepackage前的反斜杠\(原代码遗漏)。 - 计算列宽:
- 定义长度
\colonewidth,用\settowidth获取第1列最长文本的自然宽度; - 基于表格总宽度(
\mylen=\textheight)计算第2-5列的固定宽度\colwidth,确保4列宽度均等。
- 定义长度
- 修改列格式:
- 第1列采用
p{\colonewidth},保留原悬挂缩进样式,内容会在该宽度内自动换行; - 第2-5列使用统一的
p{\colwidth},搭配RaggedRight优化文本排版,避免溢出。
- 第1列采用
修改后的完整代码:
\documentclass{article} \usepackage[letterpaper,margin=2.5cm]{geometry} \usepackage{pdflscape} \usepackage{xltabular} \usepackage{ragged2e} \usepackage{booktabs} \usepackage{calc} % 用于计算列宽 newlength\mylen setlength\mylen{\textheight} % 计算列宽度 newlength\colonewidth % 填入第1列最长的文本 \settowidth{\colonewidth}{xxxxxxx xxxxxx xxxxxxxxx xxxxxx xxxxxxxxxx xxxxxxxxxxxxx xx'sxxxxxx xxx} newlength\colwidth % 计算第2-5列的固定宽度,减去第1列宽度和列间距 \setlength{\colwidth}{(\mylen - \colonewidth - 4\tabcolsep)/4} \begin{document} \begin{landscape} % 修改列格式:第1列自适应最长文本,第2-5列固定相同宽度 \begin{xltabular}{\mylen}{@{} >{\RaggedRight\hangafter1\hangindent1em}p{\colonewidth} *{4}{>{\RaggedRight}p{\colwidth}} @{}} \caption{xxxxxxxxx xxxxxxxxx xxxxx xxx xxxxx xxxxxxx} \label{tab:my-table}\\ \toprule \textbf{xxxxxxxxx} & \textbf{xxxx xxxxx} & \textbf{xxxx xxxxxx} & \textbf{xxxx xxxx xxxxxx} & \textbf{xxxxxx} \\ \midrule \endfirsthead \multicolumn{5}{@{}l}% {Table \thetable, continued from previous page} \\[0.5ex] \toprule \textbf{xxxxxxxxx} & \textbf{xxxx xxxxx} & \textbf{xxxx xxxxxx} & \textbf{xxxx xxxx xxxxxx} & \textbf{xxxxxx} \\ \midrule \endhead \midrule \multicolumn{5}{r@{}}{\footnotesize(cont'd on next page)} \endfoot \bottomrule \endlastfoot %% body of table \multicolumn{5}{@{}l}{\textbf{xxxxxxxxxxx}} \\[0.25ex] xxxxxxxxxx xxxxxxxxxx xxxx xxxxx xxxxxxxx xxxxxxxxxxxx xxxxxxxx xxxxxx xxxx & Individual & Day & 30 June 2000 & xxxxx \\ xxxxxxx xxxxxxxx xxxxxx xxxxxx xxxxxx xxxxx xxxxx xx & Individual & Day & 30 June 2000 & xxxxx \\ xxxxxxx xxxxxx xxxxxxxxx xxxxxx xxxxxxxxxx xxxxxx & Individual & Day & 30 June 2000 & xxxxx \\ xxxxxxx xxxxxx xxxxxxxxx xxxxxx xxxxxxxxxx xxxxxxxxxxxxx xxxxxxxxxx xxx & Organisation & Year & 2017 & xxxxxxxx xxxxxx xxx \\ xxxxxxx xxxxxx xxxxxxxxx xxxxxx xxxxxxxxxx xxxx & Organisation & Mon & 30 June 2000 & xxxxxxxx xxxxxxx xxxx xxxxx xxxxxxx \\ \addlinespace \multicolumn{5}{@{}l}{\textbf{xxxxxxxxxxxx}} \\[0.25ex] xxxxxxx xxxxxx xxxxxxxxx xxxxxx xxxxxxxxxx xxxxx & Organisation & Mon & 1 July 2010 & xxxx xxxxx xxxx xxxxxxxxxx xxxxxxxx xxxxxxxxxxx \\ xxxxxx xxxxxx xxxxxxxxxx xxxxxxx & Organisation & Mon & 1 July 2010 & xxxx xxxx xxxxxx xxxxxxxxx xxxxxxxxx x xxxxxxx xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx \\ xxxxxxx xxxxxx xxxxxxx & Organisation & Year & 30 June 2000 & xxxx xxxxxx xxxxxxxxxxx \\ xxxxxxx xxxxxx xxxxxxxxx xxxxxx xxxxxxxx & Organisation & Year & 1999/2000 & xxxxx xxxxxxxx xxxxxx xxxxxx xxxxxxx xxxxxxx \\ xxxxxxx xxxxxx xxxxxxxxx xxxxxx xxxxxxxxxx xx & Organisation & Year & 1999/2000 & xxxxx xxxxxxxx xxxxxx xxxxxx xxxxxxx xxxxxxx \\ xxxxxxx xxxxxx xxxxxxxxx xxxxxx xxxxxx & Organisation & xxxxxxx/xxx xxxxxxxx & 30 June 2000 & xxxx xxxxxx xxxxxxxxxxx \\ xxxxxxx xxxxxx xxxxxxxxx xxxxxx xxxxxxxxxx & Organisation & xxxxxxx/xxx xxxxxxxx & 30 June 2000 & xxxx xxxxxx xxxxxxxxxxx \\ xxxxxxx xxxxxx xxxxxxxxx xxxxxx xxxxxxxxxx x & Organisation & xxxxxxx/xxx xxxxxxxx & 30 June 2000 & xxxx xxxxxx xxxxxxxxxxx \\ xxxxxxx xxxxxx xxxxxxxxx xxxxxx xxxxxxx & Geography & xxxxxxx/xxx xxxxxxxx & 30 June 2000 & xxxx xxxxxx xxxxxxxxxxx \\ xxxxxxx xxxxxx xxxxxxxxx xxxxxx xxxxxxxx & Geography & xxx/xx xxxxxxxxx xxxx & 30 June 2000 & xxxx xxxxxx xxxxxxxxxxx \\ xxxxxxx xxxxxx xxxxxxxxx xxxxxx xxxxxxx & Geography & xxxxxxx xxxxxx & 2011 & xxxxxxxx \\ xxxxxxx xxxxxx xxx & Organisation & Quarter & February 2000 & xxxxx xxxxxxxx xxxxxx xxxxxx xxxxxxx xxxxxxxxx xxxxx \\ xxxxxxx xxxxxx xxxxxxxxx xxxxxx xxx & Organisation & Quarter & 2011/2012 Q3 & xxxxx xxxxxxxx xxxxxx xxxxxx xxxxxxx xx \\ xxxxxxx xxxxxx xxxxxxxxx xxxxxx xxxxxxxx & Organisation & Quarter & 2011/2012 Q3 & xxxxx xxxxxxxx xxxxxx xxxxxx xxxxxxx xx \\ xxxxxxx xxxxxx xxxxxxxxx xxxxxx xxxxxxx & Organisation & Quarter & 2011/2012 Q3 & xxxxx xxxxxxxx xxxxxx xxxxxx xxxxxxx xx \\ xxxxxxx xxxxxx xxxxxxxxx xxxxxx xxxxxxxx & Organisation & Quarter & 2011/2012 Q3 & xxxxx xxxxxxxx xxxxxx xxxxxx xxxxxxx xx \\ xxxxxxx xxxxxx xxxx & Organisation & Quarter & 2011/2012 Q3 & xxxxx xxxxxxxx xxxxxx xxxxxx xxxxxxx xx \\ xxxxxxx xxxxxx xxxxxxxxxxxx & Organisation & Mon & 1 July 2010 & xxxx xxxx xxxxxx xxxxxxxxx xxxxxxxxx x xxxxxxx xxxxxxxxxx xxxxxxxxxxxx \\ xxxxxxx xxxxxx xxxxxxxxx xxxxxxxx & Organisation & Mon & 1 July 2010 & xxxx xxxx xxxxxx xxxxxxxxx xxxxxxxxx x xxxxxxx xxxxxxxxxx xxxxxxxxxxxx \\ xxxxxxx xxxxxx xxxxxxxxx xxxxxx xx & Organisation & Quarter & 2011/2012 Q4 & xxxx xxxx xxxxxx xxxxxxxxx xxxxxxxxx x xxxxxxx xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx \\ xxxxxxx xxxxxx xxxxxxxxx xxxxxx xxxxxx & Organisation & Quarter & 2011/2012 Q4 & xxxx xxxx xxxxxx xxxxxxxxx xxxxxxxxx x xxxxxxx xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx \\ xxxxxxx xxxxxx xxxxxxxxx xxxxxx xxxxxx & Organisation & Quarter & 2011/2012 Q4 & xxxx xxxx xxxxxx xxxxxxxxx xxxxxxxxx x xxxxxxx xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx \\ xxxxxxx xxxxxx xxxxxxxxx xxxxxx xxxxxxxxxx xxx & Organisation & Day & 30 June 2000 & xxxx \\ xxxxxxx xxxxxx xxxxxxxxx xxxxxx xxxxxxxxxx xx & Individual & Day & 30 June 2000 & xxxx \\ xxxxxxx xxxxxx xxxxxxxxx xxxxxx xxxxxxxxxx xxxxxxxxxxxxx xxxxxxxxx & Individual & xxxxxxx xxxxx xxx & 1999 & xxxxxx \\ xxxxxxx xxxxxx xxxxxxxxx xxxxxx xxxxxxxxxx xxxxxxxx & Individual & Year & 1999 & xxxxxx xxxx xxxxx \\ xxxxxxx xxxxxx xxxxxxxxx xxxxxx xxxxxxxxxx xxxxxxxxxxxxx xxxxxxxxxx xxx & Individual & Year & 1999 & xxxxxx xxxx xxxxx \\ xxxxxxx xxxxxx xxxxxxxxx xxxxxx xxxxxxxxxx xxxxxxxxxxxxx xxxxxxxxxx xxxxxxx & Individual & Year & 1999 & xxxxxx xxxx xxxxx \\ xxxxxxx xxxxxx xxxxxxxxx xxxxxx xxxxxxxxxx xxxxxxxxxxxxx xx'sxxxxxx xxx & Individual & Year & 1999 & xxxxxx xxxx xxxxx \\ %\hline \end{xltabular} \end{landscape} \end{document}
说明
- 需确保
\settowidth中的文本是第1列实际最长的内容,若后续修改第1列文本,需同步更新此处; calc包用于简化宽度计算,保证第2-5列宽度完全一致;RaggedRight允许文本在必要时换行,避免超出列宽导致排版错乱。
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

