Минимальный компилируемый пример:
\documentclass{article}
\renewcommand{\arraystretch}{1.5}
\begin{document}
\begin{tabular}{|@{}c@{}|@{}c@{}|}
\hline
\begin{tabular}{c|c}A&B\end{tabular}&\begin{tabular}{c|c}C&D\end{tabular}\\
\hline
\begin{tabular}{c|c}E&F\end{tabular}&\begin{tabular}{c|c}G&H\end{tabular}\\
\hline
\end{tabular}
\end{document}
Вывод при компиляции с помощью pdflatex:
Вопросы на картинке:
- Как возникают вертикальные зазоры под горизонтальными линиями?
- Почему четыре угла стола пустые?
(Я не спрашиваю, как это исправить.
Я спрашиваю, почему/как эти вещи возникают.)
Если оставить \arraystretch
все как есть, то на нижних горизонтальных линиях появятся вертикальные зазоры:
\documentclass{article}
\begin{document}
\begin{tabular}{|@{}c@{}|@{}c@{}|}
\hline
\begin{tabular}{c|c}A&B\end{tabular}&\begin{tabular}{c|c}C&D\end{tabular}\\
\hline
\begin{tabular}{c|c}E&F\end{tabular}&\begin{tabular}{c|c}G&H\end{tabular}\\
\hline
\end{tabular}
\end{document}
решение1
Стандартные латексные tabular
марки |
не имеют горизонтального пространства, у них отрицательный пропуск в половину ширины правила с каждой стороны, поэтому вы всегда получаете выемку в углах. Если вы используете array
упаковку, отрицательный интервал не используется и |
вносит свой вклад в их естественную ширину.
Tabular spacing реализуется путем добавления распорки к каждой строке, а arraystretch работает путем увеличения размера распорки. Обычный случай, как здесь, заключается в том, что высота распорки больше высоты содержимого ячейки и, таким образом, предотвращает соприкосновение содержимого ячейки с hline над строкой.