![xltabular 中的单元格对齐异常](https://linux22.com/image/427437/xltabular%20%E4%B8%AD%E7%9A%84%E5%8D%95%E5%85%83%E6%A0%BC%E5%AF%B9%E9%BD%90%E5%BC%82%E5%B8%B8.png)
其中,由于一些我不知道的原因(我对此很陌生),我得到了不受欢迎的表格行为:
- 标题行的高度被拉伸,并且尽管
\settowidth
值被设置为最宽的标题,但一些值仍然居中。 - ID 列中的单元格底部对齐,而不是垂直居中。
- 更改字体大小会将
%\renewcommand\theadfont{\normalsize}
蓝色标题单元格值移到可见区域之外(就像将它们垂直对齐 90°,因此将它们移动到右侧) - 另外:我想将 ID 和 ENTRY 标题垂直和水平对齐。
我不仅希望能够解决这个问题,而且希望能够更好地理解为什么它发生了。
我的代码:
\documentclass{article}
\usepackage[margin=0pt, paperheight=602.78308pt, paperwidth=953.58274pt]{geometry}
\usepackage[table]{xcolor}
\usepackage{xltabular}
\usepackage{makecell,rotating}
\usepackage{array}
\usepackage{pifont}
\newcommand{\cm}{\cellcolor[rgb]{0.69, 0.93, 0.65}\ding{51}}%
\newcommand{\xm}{\cellcolor[rgb]{1.00, 0.67, 0.67}\ding{55}}%
\renewcommand\tabularxcolumn[1]{m{#1}}
\usepackage{array}
\usepackage{xcolor}
\usepackage{tabu}
\taburulecolor{white}
\definecolor{my-yellow}{rgb}{1.0, 0.95, 0.8}
\newcommand{\entry}{\cellcolor{my-yellow}}%
\definecolor{my-blue}{rgb}{0.74, 0.84, 0.93}
\newcommand{\dicthead}{\cellcolor{my-blue}}%
\definecolor{my-darkyellow}{rgb}{1.0, 0.9, 0.6}
\newcommand{\entryhead}{\cellcolor{my-darkyellow}}%
\usepackage{stackengine}
\newcommand\xrowht[2][0]{\addstackgap[.5\dimexpr#2\relax]{\vphantom{#1}}}
\setlength\arrayrulewidth{0.9pt}
\begin{document}
\small
\setlength{\tabcolsep}{2pt}
\settowidth\rotheadsize{\theadfont SNazwGeogr}
\begin{xltabular}{30pt}{
>{\raggedleft\arraybackslash}m{0.8cm}|
>{\raggedleft\arraybackslash}m{4.2cm}|
*{55}{>{\centering\arraybackslash}b{0.34cm}|}
}
\entryhead{ID} & \entryhead{ENTRY} & \dicthead\rothead{SW} & \dicthead\rothead{WSWOiT} & \dicthead\rothead{Starop} & \dicthead\rothead{SXVI} & \dicthead\rothead{SXVII} & \dicthead\rothead{SGeogr} & \dicthead\rothead{SŁow} & \dicthead\rothead{SNazwGeogr} & \dicthead\rothead{SPedag} & \dicthead\rothead{SWyrTech} & \dicthead\rothead{SŻegl} & \dicthead\rothead{ŚląsM} & \dicthead\rothead{ŚląsMR} & \dicthead\rothead{Dunaj} & \dicthead\rothead{Modrz} & \dicthead\rothead{Ryk} & \dicthead\rothead{SJPDor} & \dicthead\rothead{SL} & \dicthead\rothead{SWil} & \dicthead\rothead{USJP} & \dicthead\rothead{SAut} & \dicthead\rothead{SBot} & \dicthead\rothead{SBrChem} & \dicthead\rothead{SHandl} & \dicthead\rothead{SKol} & \dicthead\rothead{SLeśn} & \dicthead\rothead{SLot} & \dicthead\rothead{SMor} & \dicthead\rothead{SMyśl} & \dicthead\rothead{Sok} & \dicthead\rothead{SOkr} & \dicthead\rothead{SPrzędz} & \dicthead\rothead{SRzem} & \dicthead\rothead{SSłużGeogr} & \dicthead\rothead{SŚlus} & \dicthead\rothead{STakt} & \dicthead\rothead{STech} & \dicthead\rothead{STkac} & \dicthead\rothead{STow} & \dicthead\rothead{SWojsk} & \dicthead\rothead{SZeg} & \dicthead\rothead{SZiel} & \dicthead\rothead{Tey} & \dicthead\rothead{Żer} & \dicthead\rothead{Kok} & \dicthead\rothead{SBłęd} & \dicthead\rothead{SOrt} & \dicthead\rothead{Szob} & \dicthead\rothead{TEM} & \dicthead\rothead{Kop} & \dicthead\rothead{SGJP} & \dicthead\rothead{Karł} & \dicthead\rothead{MSGP} & \dicthead\rothead{Bor} & \dicthead\rothead{Brk} \\\endhead
\hline \xrowht[()]{8pt}
\entry{00001} & \entry{some text}
& \cm & \cm & \xm & \cm & \cm & \cm & \xm & \cm & \cm & \cm
& \xm & \cm & \cm & \cm & \cm & \cm & \cm & \cm & \cm & \xm
& \cm & \xm & \cm & \cm & \cm & \cm & \xm & \cm & \cm & \cm
& \cm & \xm & \xm & \cm & \xm & \cm & \cm & \cm & \cm & \cm
& \cm & \xm & \cm & \cm & \cm & \cm & \cm & \xm & \cm & \xm
& \cm & \cm & \xm & \cm & \xm \\ \hline \xrowht[()]{8pt}
\entry{00002} & \entry{a bit longer text perhaps a little bit too long}
& \cm & \cm & \xm & \cm & \cm & \cm & \xm & \cm & \cm & \cm
& \xm & \cm & \cm & \cm & \xm & \xm & \cm & \cm & \cm & \xm
& \cm & \xm & \cm & \xm & \cm & \cm & \xm & \cm & \cm & \xm
& \xm & \xm & \xm & \cm & \xm & \cm & \cm & \cm & \cm & \cm
& \cm & \xm & \cm & \cm & \xm & \cm & \cm & \cm & \cm & \cm
& \cm & \cm & \xm & \cm & \xm \\ \hline \xrowht[()]{8pt}
\entry{00003} & \entry{some text also quite longish}
& \cm & \cm & \xm & \xm & \cm & \xm & \xm & \cm & \cm & \cm
& \cm & \cm & \xm & \cm & \cm & \cm & \cm & \cm & \cm & \xm
& \xm & \xm & \cm & \cm & \cm & \cm & \xm & \cm & \cm & \cm
& \cm & \xm & \xm & \cm & \cm & \cm & \xm & \cm & \cm & \cm
& \cm & \xm & \cm & \cm & \cm & \cm & \cm & \xm & \xm & \cm
& \cm & \cm & \xm & \cm & \xm \\ \hline \xrowht[()]{8pt}
\entry{00004} & \entry{formy dla przemysłu cementowego i ceramicznego}
& \cm & \cm & \xm & \cm & \cm & \cm & \xm & \cm & \cm & \cm
& \xm & \cm & \cm & \cm & \cm & \cm & \cm & \cm & \cm & \xm
& \cm & \xm & \cm & \cm & \cm & \cm & \xm & \cm & \cm & \cm
& \cm & \xm & \xm & \cm & \xm & \cm & \cm & \cm & \cm & \cm
& \cm & \xm & \cm & \cm & \cm & \cm & \cm & \xm & \cm & \xm
& \cm & \cm & \xm & \cm & \xm \\ \hline \xrowht[()]{8pt}
\entry{00005} & \entry{a bit longer text}
& \cm & \cm & \xm & \cm & \cm & \cm & \xm & \cm & \cm & \cm
& \xm & \cm & \cm & \cm & \xm & \xm & \cm & \cm & \cm & \xm
& \cm & \xm & \cm & \xm & \cm & \cm & \xm & \cm & \cm & \xm
& \xm & \xm & \xm & \cm & \xm & \cm & \cm & \cm & \cm & \cm
& \cm & \xm & \cm & \cm & \xm & \cm & \cm & \cm & \cm & \cm
& \cm & \cm & \xm & \cm & \xm \\ \hline \xrowht[()]{8pt}
\entry{00006} & \entry{word}
& \cm & \cm & \xm & \xm & \cm & \xm & \xm & \cm & \cm & \cm
& \cm & \cm & \xm & \cm & \cm & \cm & \cm & \cm & \cm & \xm
& \xm & \xm & \cm & \cm & \cm & \cm & \xm & \cm & \cm & \cm
& \cm & \xm & \xm & \cm & \cm & \cm & \xm & \cm & \cm & \cm
& \cm & \xm & \cm & \cm & \cm & \cm & \cm & \xm & \xm & \cm
& \cm & \cm & \xm & \cm & \xm \\ \hline \xrowht[()]{8pt}
\entry{00007} & \entry{short text}
& \cm & \cm & \xm & \cm & \cm & \cm & \xm & \cm & \cm & \cm
& \xm & \cm & \cm & \cm & \cm & \cm & \cm & \cm & \cm & \xm
& \cm & \xm & \cm & \cm & \cm & \cm & \xm & \cm & \cm & \cm
& \cm & \xm & \xm & \cm & \xm & \cm & \cm & \cm & \cm & \cm
& \cm & \xm & \cm & \cm & \cm & \cm & \cm & \xm & \cm & \xm
& \cm & \cm & \xm & \cm & \xm \\ \hline \xrowht[()]{8pt}
\entry{00008} & \entry{a bit longer text again}
& \cm & \cm & \xm & \cm & \cm & \cm & \xm & \cm & \cm & \cm
& \xm & \cm & \cm & \cm & \xm & \xm & \cm & \cm & \cm & \xm
& \cm & \xm & \cm & \xm & \cm & \cm & \xm & \cm & \cm & \xm
& \xm & \xm & \xm & \cm & \xm & \cm & \cm & \cm & \cm & \cm
& \cm & \xm & \cm & \cm & \xm & \cm & \cm & \cm & \cm & \cm
& \cm & \cm & \xm & \cm & \xm \\ \hline \xrowht[()]{8pt}
\end{xltabular}
\end{document}
答案1
这是您的代码版本,应该会产生预期的输出。
我对所做的更改添加了一些评论,但如果您愿意,我也可以尝试更详细地解释我的更改。
问题 1 和 3 是由于单元格太窄,无法容纳字母高度而导致的。为了解决这个问题,我稍微减少了\tabcolsep
从2pt
到的值1.75pt
,同时稍微增加了从0.34cm
到 的列宽0.3575
列宽。这会导致所有旋转的列标题都与各自单元格的底部对齐。
为了使代码稍微整洁一些,我还将行首的重复使用的 替换dicthead
为单个命令。我还将列说明符定义中添加的所有使用的 替换为。为了给前两列的列标题着色,同时垂直和水平居中相应的文本,我根据 和 定义了一个新命令。\rowcolor
\entry
\columncolor
\cellcolor
\makecell
thead
\documentclass{article}
\usepackage[margin=0pt, paperheight=602.78308pt, paperwidth=953.58274pt]{geometry}
\usepackage[table]{xcolor}
%\usepackage{xltabular}
\usepackage{makecell,rotating}
%\usepackage{array} % already loaded by makecell
\usepackage{longtable}% replaces xltabular, since you did not seem to usa any X type columns, longtable is sufficient.
\usepackage{pifont}
\newcommand{\cm}{\cellcolor[rgb]{0.69, 0.93, 0.65}\ding{51}}%
\newcommand{\xm}{\cellcolor[rgb]{1.00, 0.67, 0.67}\ding{55}}%
%\renewcommand\tabularxcolumn[1]{m{#1}}
%\usepackage{tabu}
%\taburulecolor{white}
% replaced tabu and \taburulecolor with:
\arrayrulecolor{white}
\definecolor{my-yellow}{rgb}{1.0, 0.95, 0.8}
%\newcommand{\entry}{\cellcolor{my-yellow}}% % replaced with \columncolor
\definecolor{my-blue}{rgb}{0.74, 0.84, 0.93}
%\newcommand{\dicthead}{\cellcolor{my-blue}}% replaced with \rowcolor
\definecolor{my-darkyellow}{rgb}{1.0, 0.9, 0.6}
\newcommand{\entryhead}{\cellcolor{my-darkyellow}}%
\newcommand{\mythead}[1]{\entryhead\thead{\entryhead #1}} % new command to horizontally and vertically center the column headers of the first two columns, while at the same time adjusting their color
\usepackage{stackengine}
\newcommand\myxrowht{\addstackgap[.5\dimexpr4pt\relax]{\vphantom{()}}}
\setlength\arrayrulewidth{0.9pt}
\begin{document}
\small
\setlength{\tabcolsep}{1.75pt} % slightly smaller value to allow columns to be wider
\settowidth\rotheadsize{\theadfont SNazwGeogr}
\begin{longtable}{
>{\raggedleft\arraybackslash\columncolor{my-yellow}}m{0.8cm}| % \columncolor replaces \entry commands
>{\raggedleft\arraybackslash\columncolor{my-yellow}}m{4.2cm}| % \columncolor replaces \entry commands
*{55}{>{\centering\arraybackslash}m{0.3575cm}|} % slightly wider columns to remove alignment issue in column headers.
}
\rowcolor{my-blue} \mythead{ID} & \mythead{ENTRY} & \rothead{SW} & \rothead{WSWOiT} & \rothead{Starop} & \rothead{SXVI} & \rothead{SXVII} & \rothead{SGeogr} & \rothead{SŁow} & \rothead{SNazwGeogr} & \rothead{SPedag} & \rothead{SWyrTech} & \rothead{SŻegl} & \rothead{ŚląsM} & \rothead{ŚląsMR} & \rothead{Dunaj} & \rothead{Modrz} & \rothead{Ryk} & \rothead{SJPDor} & \rothead{SL} & \rothead{SWil} & \rothead{USJP} & \rothead{SAut} & \rothead{SBot} & \rothead{SBrChem} & \rothead{SHandl} & \rothead{SKol} & \rothead{SLeśn} & \rothead{SLot} & \rothead{SMor} & \rothead{SMyśl} & \rothead{Sok} & \rothead{SOkr} & \rothead{SPrzędz} & \rothead{SRzem} & \rothead{SSłużGeogr} & \rothead{SŚlus} & \rothead{STakt} & \rothead{STech} & \rothead{STkac} & \rothead{STow} & \rothead{SWojsk} & \rothead{SZeg} & \rothead{SZiel} & \rothead{Tey} & \rothead{Żer} & \rothead{Kok} & \rothead{SBłęd} & \rothead{SOrt} & \rothead{Szob} & \rothead{TEM} & \rothead{Kop} & \rothead{SGJP} & \rothead{Karł} & \rothead{MSGP} & \rothead{Bor} & \rothead{Brk} \\\endhead
\hline \myxrowht
\makecell{00001} & some text
& \cm & \cm & \xm & \cm & \cm & \cm & \xm & \cm & \cm & \cm
& \xm & \cm & \cm & \cm & \cm & \cm & \cm & \cm & \cm & \xm
& \cm & \xm & \cm & \cm & \cm & \cm & \xm & \cm & \cm & \cm
& \cm & \xm & \xm & \cm & \xm & \cm & \cm & \cm & \cm & \cm
& \cm & \xm & \cm & \cm & \cm & \cm & \cm & \xm & \cm & \xm
& \cm & \cm & \xm & \cm & \xm \\ \hline \myxrowht
\makecell{00002} & a bit longer text perhaps a little bit too long
& \cm & \cm & \xm & \cm & \cm & \cm & \xm & \cm & \cm & \cm
& \xm & \cm & \cm & \cm & \xm & \xm & \cm & \cm & \cm & \xm
& \cm & \xm & \cm & \xm & \cm & \cm & \xm & \cm & \cm & \xm
& \xm & \xm & \xm & \cm & \xm & \cm & \cm & \cm & \cm & \cm
& \cm & \xm & \cm & \cm & \xm & \cm & \cm & \cm & \cm & \cm
& \cm & \cm & \xm & \cm & \xm \\ \hline \myxrowht
\makecell{00003} & some text also quite longish
& \cm & \cm & \xm & \xm & \cm & \xm & \xm & \cm & \cm & \cm
& \cm & \cm & \xm & \cm & \cm & \cm & \cm & \cm & \cm & \xm
& \xm & \xm & \cm & \cm & \cm & \cm & \xm & \cm & \cm & \cm
& \cm & \xm & \xm & \cm & \cm & \cm & \xm & \cm & \cm & \cm
& \cm & \xm & \cm & \cm & \cm & \cm & \cm & \xm & \xm & \cm
& \cm & \cm & \xm & \cm & \xm \\ \hline \myxrowht
\makecell{00004} & formy dla przemysłu cementowego i ceramicznego
& \cm & \cm & \xm & \cm & \cm & \cm & \xm & \cm & \cm & \cm
& \xm & \cm & \cm & \cm & \cm & \cm & \cm & \cm & \cm & \xm
& \cm & \xm & \cm & \cm & \cm & \cm & \xm & \cm & \cm & \cm
& \cm & \xm & \xm & \cm & \xm & \cm & \cm & \cm & \cm & \cm
& \cm & \xm & \cm & \cm & \cm & \cm & \cm & \xm & \cm & \xm
& \cm & \cm & \xm & \cm & \xm \\ \hline \myxrowht
\makecell{00005} & a bit longer text
& \cm & \cm & \xm & \cm & \cm & \cm & \xm & \cm & \cm & \cm
& \xm & \cm & \cm & \cm & \xm & \xm & \cm & \cm & \cm & \xm
& \cm & \xm & \cm & \xm & \cm & \cm & \xm & \cm & \cm & \xm
& \xm & \xm & \xm & \cm & \xm & \cm & \cm & \cm & \cm & \cm
& \cm & \xm & \cm & \cm & \xm & \cm & \cm & \cm & \cm & \cm
& \cm & \cm & \xm & \cm & \xm \\ \hline \myxrowht
\makecell{00006} & word
& \cm & \cm & \xm & \xm & \cm & \xm & \xm & \cm & \cm & \cm
& \cm & \cm & \xm & \cm & \cm & \cm & \cm & \cm & \cm & \xm
& \xm & \xm & \cm & \cm & \cm & \cm & \xm & \cm & \cm & \cm
& \cm & \xm & \xm & \cm & \cm & \cm & \xm & \cm & \cm & \cm
& \cm & \xm & \cm & \cm & \cm & \cm & \cm & \xm & \xm & \cm
& \cm & \cm & \xm & \cm & \xm \\ \hline \myxrowht
\makecell{00007} & short text
& \cm & \cm & \xm & \cm & \cm & \cm & \xm & \cm & \cm & \cm
& \xm & \cm & \cm & \cm & \cm & \cm & \cm & \cm & \cm & \xm
& \cm & \xm & \cm & \cm & \cm & \cm & \xm & \cm & \cm & \cm
& \cm & \xm & \xm & \cm & \xm & \cm & \cm & \cm & \cm & \cm
& \cm & \xm & \cm & \cm & \cm & \cm & \cm & \xm & \cm & \xm
& \cm & \cm & \xm & \cm & \xm \\ \hline \myxrowht
\makecell{00008} & a bit longer text again
& \cm & \cm & \xm & \cm & \cm & \cm & \xm & \cm & \cm & \cm
& \xm & \cm & \cm & \cm & \xm & \xm & \cm & \cm & \cm & \xm
& \cm & \xm & \cm & \xm & \cm & \cm & \xm & \cm & \cm & \xm
& \xm & \xm & \xm & \cm & \xm & \cm & \cm & \cm & \cm & \cm
& \cm & \xm & \cm & \cm & \xm & \cm & \cm & \cm & \cm & \cm
& \cm & \cm & \xm & \cm & \xm \\ \hline
\end{longtable}
\end{document}