使用此 mwe 代码,我在第 3 列和第 4 列之间获得了不完整的填充(标记为第 2 列和第 3 列,就在标记为第 5 行的 B-Q3 之前)。我用 @{} 标记了每个列,目的是消除列间空白。我做错了什么?
% arara: xelatex: { shell: true }
% mco.tex -- Compare Center Counter Through 15 Editions of MCO
% Hugh S. Myers
% Last Change: 22:55:54 08:10:2021
%
\documentclass[article]{memoir}
\usepackage{fontspec}
\usepackage{xtab}
\newcommand{\prepTable}[2]{
\tablefirsthead{
\multicolumn{6}{c}{\large Centre Counter.}\\
\multicolumn{6}{c}{1\;{}P---K4, P---Q4.}\\
\DoubleRule{1em}{1.65pt}{1em}
\multicolumn{3}{l}{2\hspace{.65em}P\x P, Q\x P;\;\;3\hspace{.65em}Kt---Q\,B3, Q---Q\,R4.}&&&\\
& \ral{c}{\LARGE*} & & & &\\[-1.2em]
#1 \\
}
\tablehead{
\multicolumn{#2}{l}{\small\emph{Continued from previous page}} \\
\midrule[\heavyrulewidth]
#1 \\
\midrule
}
\tabletail{
\midrule[\heavyrulewidth]
\multicolumn{#2}{r}{\small\emph{Continued on next page}} \\
}
\tablelasttail{\specialrule{0.1pt}{1em}{1pt}}
}
\newcommand*{\ral}[2]{\multicolumn{1}{#1}{#2}}
\newcommand{\DoubleRule}[3]{\specialrule{0.1pt}{#1}{0pt}\specialrule{0.1pt}{#2}{#3}}
\newfontface{\Chess}{SkakNew-Figurine.otf}
\setromanfont[Ligatures={Common}, Numbers={OldStyle}]{Linux Libertine O}
\newcommand{\x}{\hspace{0.1em}{\Chess X}\hspace{0.1em}}
\newcommand{\M}[1]{\multicolumn{1}{r}{#1}}
\begin{document}
\prepTable{& \ral{c}{1} & \ral{c}{2} &\ral{c}{3} &\ral{c}{4} &\ral{c}{5}}{6}
\begin{center}
\begin{xtabular}{@{}p{1.5em}*{5}{@{}p{0.166\linewidth}}}
\M{4} & P---Q4 & & & & \\
& Kt---K\,B3\ & & & & \\
\M{5} & Kt---B3\dotfill & .\dotfill & B---Q3\dotfill & B---Q\,B4 & \\
& B---Kt5\dotfill & B---B4 & Kt---B3 & Kt---B3\dotfill & B---Kt5\\
\end{xtabular}
\end{center}
\end{document}
答案1
您的跨越入口
\multicolumn{3}{l}{2\hspace{.65em}P\x P, Q\x P;\;\;3\hspace{.65em}Kt---Q\,B3, Q---Q\,R4.}
比它跨越的三列要宽,所以第三列被扩展了。但是,这是一p
列,并且该列中的内部 parbox 仍然是指定的宽度。
如果我没看错的话,单元格不需要只跨越三列,你可以让它跨越 4 列
\multicolumn{4}{l}{2\hspace{.65em}P\x P, Q\x P;\;\;3\hspace{.65em}Kt---Q\,B3, Q---Q\,R4.}&&\\