xltabular 中的单元格对齐异常

xltabular 中的单元格对齐异常

我有下表: 在此处输入图片描述

其中,由于一些我不知道的原因(我对此很陌生),我得到了不受欢迎的表格行为:

  1. 标题行的高度被拉伸,并且尽管\settowidth值被设置为最宽的标题,但一些值仍然居中。
  2. ID 列中的单元格底部对齐,而不是垂直居中。
  3. 更改字体大小会将%\renewcommand\theadfont{\normalsize}蓝色标题单元格值移到可见区域之外(就像将它们垂直对齐 90°,因此将它们移动到右侧)
  4. 另外:我想将 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 是由于单元格太窄,无法容纳字母高度而导致的。为了解决这个问题,我稍微减少了\tabcolsep2pt到的值1.75pt,同时稍微增加了从0.34cm到 的列宽0.3575列宽。这会导致所有旋转的列标题都与各自单元格的底部对齐。

为了使代码稍微整洁一些,我还将行首的重复使用的 替换dicthead为单个命令。我还将列说明符定义中添加的所有使用的 替换为。为了给前两列的列标题着色,同时垂直和水平居中相应的文本,我根据 和 定义了一个新命令。\rowcolor\entry\columncolor\cellcolor\makecellthead

在此处输入图片描述

\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}

相关内容