我遇到了一些问题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
表格应该位于标题内或标题之后,标题必须位于table
或longtable
环境内。由于您没有提供任何信息来明确您是否真正需要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}