Longtable 换行溢出

Longtable 换行溢出

我遇到了一些问题longtable

\documentclass{article}
\usepackage[utf8]{inputenc}

\title{Test}


\usepackage{tabu}

\usepackage{longtable}
\usepackage{multirow}
\usepackage{multicol}


\begin{document}

\begin{longtable}{|l|l|l|l|l|}
\hline 
\textbf{Sensor} & \textbf{Erfassung} & \textbf{Typ} & \textbf{Spule} & \textbf{Erfassendes Steuerger\"{a}t} \\ 
\hline
B13.1 & Testwelle & Induktiv & - & ESO9 + CRA \\ 
\hline
B13.2 & Testwelle & Induktiv & - & ESO9 + MSI6 \\ 
\hline
\multirow{2}{}{B1} & \multirow{2}{}{Testwelle} & \multirow{2}{}{Induktiv Doppelspule} & 1 & ESO9 + CRA \\ 
 \cline{4-5}
 &  &  & 2 & MSI6 \\ 
\hline

\end{longtable}\label{tab:table1}

\end{document}

在此处输入图片描述

正如您在最后一列中看到的,第三个单元格的大小是错误的。单词 Doppelspule 溢出了。

有没有办法解决这个问题,而无需更改表格类型或手动设置单元格大小?

答案1

您使用了错误的multirow单元格语法。遗漏了*单元格的宽度或范围。例如:正确的语法是\multirow{2}{*}{B1}、不是\multirow{2}{}{B1}等。完成 MWE:

\documentclass{article}
\usepackage{longtable, makecell, multirow}
\renewcommand\theadfont{\small\bfseries}
\renewcommand\theadgape{}

\title{Test}

\begin{document}
    \begin{longtable}{|l|l|l|l|l|}
\hline
\thead{Sensor}  & \thead{Erfassung} & \thead{Typ}   
                        & \thead{Spule}     & \thead{Erfassendes Steuerger\"{a}t}   \\
    \hline
B13.1               & Testwelle         & Induktiv 
                    & --                & ESO9 + CRA        \\
    \hline
B13.2               & Testwelle         & Induktiv 
                    & --                & ESO9 + MSI6       \\
    \hline
\multirow{2}{*}{B1} & \multirow{2}{*}{Testwelle} & \multirow{2}{5em}{Induktiv Doppelspule}
                    & 1                 & ESO9 + CRA        \\
    \cline{4-5}
                    &   &                   & 2 & MSI6      \\
    \hline
\end{longtable}
\label{tab:table1}  % <--- wrong position!
\end{document}

在此处输入图片描述

注意:\label表格应该位于标题内或标题之后,标题必须位于tablelongtable环境内。由于您没有提供任何信息来明确您是否真正需要longtable,也许您需要在表格中添加以下序言:

    \begin{longtable}{|l|l|l|l|l|}
    \caption{My long table}
    \label{tab:table1}                  \\
    \hline
\thead{Sensor}  & \thead{Erfassung} & \thead{Typ}
                & \thead{Spule}     & \thead{Erfassendes Steuerger\"{a}t}   \\
    \hline
\endfirsthead
    \caption[]{My long table (cont.)}   \\
    \hline
\thead{Sensor}  & \thead{Erfassung} & \thead{Typ}
                & \thead{Spule}     & \thead{Erfassendes Steuerger\"{a}t}   \\
    \hline
\thead{Sensor}  & \thead{Erfassung} & \thead{Typ}
                & \thead{Spule}     & \thead{Erfassendes Steuerger\"{a}t}   \\
    \hline
\endhead
    \hline
    \multicolumn{5}{r}{\footnotesize\textit{Continue on the next page}}
\endfoot
    \hline
\endlastfoot
% table body

使用longtable,您需要编译您的文档至少两次,然后表格才能正确排列。

答案2

我建议使用设置表格书签规则和嵌套表格而不是多行。此外,我使用\parbox单元格内部来换行。如果您有更新的大批包中,您可以使用固定宽度的列轻松排列复杂的多跨行:

在此处输入图片描述

\documentclass{article}
\usepackage{longtable, booktabs, array}

\title{Test}

\begin{document}
    \begin{longtable}{@{}*{3}{l}wc{1.25cm}wl{2.2cm}@{}}
\caption{Long table \label{tab:table1}}\\

\toprule
\small\bfseries Sensor   & \small\bfseries Erfassung & \small\bfseries Typ   & 
\small\bfseries Spule     & \parbox{2cm}{\small\bfseries Erfassendes\par Steuergerät}\\
\midrule
\endhead
B13.1   & Testwelle   & Induktiv  & --   & ESO9 + CRA        \\
B13.2   & Testwelle   & Induktiv  & --   & ESO9 + MSI6       \\
\midrule
B1 & Testwelle & \parbox{2cm}{Induktiv \par Doppelspule} &
     \multicolumn{2}{@{}wl{3.45cm}}{%
     \begin{tabular}{@{}wc{1.25cm}l@{}}
     1 & ESO9 + CRA  \\ \midrule
     2 & MSI6\end{tabular}}\\
    \bottomrule
\end{longtable}
\end{document}

相关内容