Longtable 不包括右边框

Longtable 不包括右边框

我正在尝试将其纳入longtable我的工作中。

我得到了我想要的所有边框,除了表格“主体”上缺少右边框。(页眉出现在每一页上,因此运行良好)

\documentclass[a4paper,12pt]{book}

\usepackage{ltablex}
\setlength{\parindent}{0pt} % never indent first line

\begin{document}

{\renewcommand{\arraystretch}{1.2}
\begin{longtable}{| c | m{5cm} | m{9.5cm} | }
\hline
&  \textbf{\scshape{What you observed}} &   \textbf{\scshape{Suggestions/reasons/examples}} \\
\hline
\hline
\endhead

\hline
A & \multicolumn{2}{l | }{\textbf{SC} }\\
\hline
& \textbf{1.    P} \newline
\null \hspace{3mm} a\newline
\null \hspace{3mm} b\newline
\null \hspace{3mm}c\newline
\null \hspace{3mm}d\\
\hline
&\textbf{2. -}\newline
\null \hspace{3mm}a\newline
\null \hspace{3mm}b\newline
\null \hspace{3mm}c\newline
\null \hspace{3mm}d\newline
\null \hspace{3mm}e\\
\end{longtable}
\end{document}

在此处输入图片描述

我需要如何更改我的代码?

答案1

我想提出几点建议。

如果您想对任何元素进行编号(在您的情况下为行),请使用计数器,这样您就不必记住下一个值。

LaTeX 已经有列表,您可以通过以下方式使用和格式化标准方法或额外套餐枚举项,我在下面的代码中做到了。

在表格中使用列表的一个缺点是它们会在单元格中留下额外的空行。补救措施是将列表的代码包装在\parbox或内。然后,无论需要什么间距都必须手动添加。这就是为什么列表前后minipage有两个。\vsppace{...}

\documentclass[a4paper,12pt]{book}
\usepackage{ltablex}
\usepackage{array}       % Adds m{...} type column
\usepackage{longtable}
\usepackage{enumitem}    % More options for lists
\usepackage{newtx}       % Change font for the example to have combine \scshape and \bfseries

\setlength{\parindent}{0pt} % never indent first line

\newcounter{mainlist}\renewcommand\themainlist{\arabic{mainlist}.}
\newlist{innerenum}{enumerate}{1}
\setlist[innerenum]{
  nosep,
  label=\alph*,
}


\begin{document}
{%
  \renewcommand{\arraystretch}{1.2}
  \begin{longtable}{| c| m{5cm}| m{8.5cm}|}
    \hline
    & \textbf{\textsc{What you observed}} & \textsc{\textbf{Suggestions/reasons/examples}} \\
    \hline\hline\endhead
    A & \multicolumn{2}{l|}{\textbf{SC}} \\
    \hline
    & \textbf{\stepcounter{mainlist}\themainlist{} P}\par
      \parbox{\linewidth}{%
      \vspace{0.5\baselineskip}%
      \begin{innerenum}
      \item
      \item
      \item
      \item
      \end{innerenum}\vspace{0.5\baselineskip}}
    & \\
    \hline
    & \textbf{\stepcounter{mainlist}\themainlist{} -}\par
      \parbox{\linewidth}{%
      \vspace{0.5\baselineskip}%
      \begin{innerenum}
      \item
      \item
      \item
      \item
      \end{innerenum}\vspace{0.5\baselineskip}}
    & \\
    \hline
  \end{longtable}}
\end{document}

在此处输入图片描述

答案2

  • longtable我宁愿使用longtblrtabularray
  • enumerate对于第二列的列表,使用带有选项的列表似乎更好resume*=<list name>
  • 在下面的 MWE 中,我预计该表有表格标题
\documentclass[a4paper,12pt]{book}
\usepackage{newtxtext, newtxmath}   % for scshape bfseries font
\usepackage{tabularray}
\UseTblrLibrary{varwidth}                       

\usepackage{ragged2e}
\usepackage{enumitem}
\usepackage{etoolbox}
\AtBeginEnvironment{longtblr}{%
    \setlist[enumerate,1]{nosep, 
                          leftmargin = *,
                          label      = \textbf{\arabic*.},
                          after =\end{minipage},                  
                          before=\begin{minipage}[t]{\linewidth}%\RagggedRight 
                         }
    \setlist[enumerate,2]{nosep,
                          leftmargin=*,
                          label = \alph*
                         }
                           }% end of AtBeginEnvironment
\setlength{\parindent}{0pt} % never indent first line

\begin{document}
    \begin{longtblr}[
caption = {Long table},
  label = {tab:longtblr}
                    ]{hlines, vlines,
                     colspec = {c X[j] X[2, j]},
                     row{1}  = {font=\bfseries\scshape},
                     measure = vbox,
                     rowhead = 1
                     }
    &  What you observed
            &   Suggestions/reasons/examples
                                        \\
\hline
A   & \SetCell[c=2]{l}  \textbf{SC}     \\
    &   \begin{enumerate}[series=tab]
    \item   \textbf{P}
            \begin{enumerate} 
        \item
        \item
        \item
        \item
            \end{enumerate}
        \end{enumerate}
        &                           \\
    &   \begin{enumerate}[resume*=tab]
    \item   \textbf{--}
            \begin{enumerate}
        \item
        \item
        \item
        \item
            \end{enumerate}
        \end{enumerate}
        &                           \\
\end{longtblr}
\end{document}

在此处输入图片描述

  • 在这种情况下,如果您不喜欢在 中添加字幕longtblr,那么 MWE 必须是:
\documentclass[a4paper,12pt]{book}
\usepackage{lipsum}
% rest of preamble

\begin{document}
\begingroup
\DefTblrTemplate{firsthead, middlehead,lasthead}{default}{} % <---
\DefTblrTemplate{contfoot-text}{normal}{\scriptsize\textit{Continued on the next page}}
\SetTblrTemplate{contfoot-text}{normal}
    \begin{longtblr}[
                    ]{hlines, vlines,
                     colspec = {c X[j] X[2, j]},
                     row{1}  = {font=\bfseries\scshape},
                     measure = vbox,
                     rowhead = 1
                     }
% rest of table
\end{longtblr}
\endgroup
\end{document}

在此处输入图片描述

相关内容