У меня есть не такая уж сложная таблица, как ниже, но я всегда получал ошибку "Underfull \vbox (badness 10000) detected at line 127", надеюсь, вы сможете ее воспроизвести. Кто-нибудь знает причину и как ее исправить? Это всего лишь пример, и у меня может быть около 100 таблиц в одном файле, и я хотел бы исправить ее в начале.
\documentclass{article}
\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\usepackage{geometry}
\usepackage[parfill]{parskip}
\geometry{letterpaper}
\usepackage{graphicx}
\usepackage{longtable}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage{colortbl, xcolor}
\usepackage{amssymb}
\usepackage{enumitem}
\usepackage{float}
\usepackage{color}
\usepackage{multirow}
\usepackage{epstopdf}
\hfuzz=\maxdimen
\tolerance=10000
\hbadness=10000
\begin{document}
\begin{longtable}{rL{2cm}L{3.5cm}L{2cm}L{4cm}L{1.8cm}}
\hline
& Variable & Description & Type & Values & Missing \\
\hline
1 & sid & child id & string & & \\
\rowcolor[gray]{0.8}2 & specnum & specimen number & string & & \\
3 & specseq & specimen sequence & string & & \\
\rowcolor[gray]{0.8}4 & spectype & specimen type & string & & \\
5 & vstnum & visit number & integer & & \\
\rowcolor[gray]{0.8}6 & vstwk & visit week & string & & \\
7 & vstdetail & visit details & string & & \\
\rowcolor[gray]{0.8}8 & lps & α lps gmu/ml (endocab) & integer & -9= missing & -9 \\
9 & rept & do you need to repeat sample? & categorical & 1 = yes, 2 = no & \\
\rowcolor[gray]{0.8}10 & resn & reason for repeating & categorical & 3=sample out of range, 4 = assay failed, -9 = not applicable & -9 \\
11 & comnt & comment & string & & \\
\rowcolor[gray]{0.8}12 & specdt & date of specimen collection dd/mm/yy & date & & 1999-09-09 \\
13 & assydt & date assay performed dd/mm/yy & date & & 1999-09-09 \\
\rowcolor[gray]{0.8}14 & dedt & date entered & date & & 1999-09-09 \\
15 & qcdt & date checked & date & & 1999-09-09 \\
\rowcolor[gray]{0.8}16 & batch & assay batch \# & integer & & \\
17 & version & batch version & string & & \\
\rowcolor[gray]{0.8} \hline
\hline
\end{longtable}
\end{document}
решение1
Предупреждение о неполном заполнении поля — это всего лишь предупреждение, а не ошибка.
\documentclass[landscape]{article}
\usepackage{longtable}
\addtolength\textwidth{120pt}
\usepackage[T1]{fontenc}
\usepackage{array}
\showoutput
\newcolumntype{L}[1]{>{\raggedright\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash\hspace{0pt}}m{#1}}
\begin{document}
\begin{longtable}{rL{2cm}L{3.5cm}L{2cm}L{4cm}L{1.8cm}}
\hline
1 & sid & child id & string & &
\end{longtable}
\end{document}
выше показано, что не полностью заполненное поле представляет собой пустую строку, которая пытается быть пропущенной базовой линией, но содержит только правило высотой 0,4 пункта из \hline
.
Это, по-видимому, недокументированная функция пакета longtable. Я бы обвинил автора пакета.
решение2
Согласно примеру Дэвида Карлайла, размещение верхней/нижней линий в порядке «голова/нога» позволяет избежать предупреждения о недостаточном заполнении:
\begin{longtable}{rL{2cm}L{3.5cm}L{2cm}L{4cm}L{1.8cm}}
\hline
\endhead
\hline
\endfoot
1 & sid & child id & string & &
\end{longtable}
В моем случае было странно, что у меня была точная таблица, импортированная в четыре документа, но только один сгенерировал сообщение о недозаполнении. Должно быть, это как-то связано с тем, как таблица вписывается в окружающий (разный в каждом документе) текст, чтобы заполнить страницу.