使用 xtabular 和 memoir 通过 \dotfill 进行部分填充

使用 xtabular 和 memoir 通过 \dotfill 进行部分填充

使用此 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.}&&\\

相关内容