表格中多行内的迷你页面

表格中多行内的迷你页面

以下示例mc.tex(在网上找到)pdflatex在 Linux/Debian/unstable 上有效,Version 3.14159265-2.6-1.40.19 (TeX Live 2019/dev/Debian并且LaTeX2e <2018-04-01> patch level 5) (preloaded format=pdflatex)

\documentclass[11pt]{article}
\usepackage{multirow}
\begin{document}
\begin{table}[ht]
  \caption{Partial horizontal line}
  \begin{tabular}{ccc}
    \hline
    \multicolumn{2}{c}{\multirow{2}{*}{multi-col-row}}&\\
    \cline{1-2}
    X1&X2&X3\\
    Y1&Y2&Y3\\
    \hline
  \end{tabular}
  \label{tab:multicol}
\end{table}
\end{document}

但下面类似的例子mc1.tex却不起作用:

\documentclass[11pt]{article}
\usepackage{multirow}
\begin{document}
\begin{table}[ht]
  \caption{Partial horizontal line}
  \begin{tabular}{ccc}
    \hline
    \multicolumn{2}{c}{\multirow{2}{*}{\begin{minipage}[t]{0.2\textwidth}
          \smallskip

          \textbf{\Large XX}

          here is yyyyy text
        \end{minipage}
    }}&\\
    \cline{1-2}
    X1&X2&X3\\
    Y1&Y2&Y3\\
    \hline
  \end{tabular}
  \label{tab:multicol}
\end{table}
\end{document}

我收到以下错误:

 % pdflatex mc1.tex
This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2019/dev/Debian) (preloaded format=pdflatex)
 restricted \write18 enabled.
entering extended mode
(./mc1.tex
LaTeX2e <2018-04-01> patch level 5
(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls
Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
(/usr/share/texlive/texmf-dist/tex/latex/base/size11.clo))
(/usr/share/texlive/texmf-dist/tex/latex/multirow/multirow.sty) (./mc1.aux)
Runaway argument?
{\begin {minipage}[t]{0.2\textwidth } \smallskip 
! Paragraph ended before \@xmultirow was complete.
<to be read again> 
                   \par 
l.15     }}
           &\\

如何在表格中的多行内创建一个小页面?

答案1

问题是,虽然\multirow它本身可能是一个长宏,但它将其参数传递给\@multirow未定义的宏\long,因此它不能\par在其参数中接受任何或空行。因此,有问题的部分不是你的minipage,而是其中包含的两个\par标记(空行)。可以通过使用\endgraf而不是\par\endgraf然后扩展为\par)来欺骗此解析规则。因此,以下内容可以正常工作:

\documentclass[11pt]{article}
\usepackage{multirow}
\begin{document}
\begin{table}[ht]
  \caption{Partial horizontal line}
  \begin{tabular}{ccc}
    \hline
    \multicolumn{2}{c}{\multirow{2}{*}{\begin{minipage}[t]{0.2\textwidth}
          \smallskip
          \endgraf
          \textbf{\Large XX}
          \endgraf
          here is yyyyy text
        \end{minipage}
    }}&\\
    &\\
    &\\
    &\\
    \cline{1-2}
    X1&X2&X3\\
    Y1&Y2&Y3\\
    \hline
  \end{tabular}
  \label{tab:multicol}
\end{table}
\end{document}

如果这两列的唯一内容是minipage,那么使用p类型单元格可能是一个更好的主意\multicolumn\multicolumn已定义\long,因此可以\par直接获取标记):

\documentclass[11pt]{article}
\usepackage{multirow}
\begin{document}
\begin{table}[ht]
  \caption{Partial horizontal line}
  \begin{tabular}{ccc}
    \hline
    \multicolumn{2}{p{.2\textwidth}}{
          \smallskip

          \textbf{\Large XX}

          here is yyyyy text
    }&\\
    \cline{1-2}
    X1&X2&X3\\
    Y1&Y2&Y3\\
    \hline
  \end{tabular}
  \label{tab:multicol}
\end{table}
\end{document}

相关内容