Я пытаюсь увеличить расстояние между строками таблицы tabularx
. Следующий код отлично работает и делает то, что мне нужно:
\begin{tabularx}{5ex}{X}
text \\[2ex]
x
\end{tabularx}
Однако если текст слишком длинный и не помещается в одну строку, то вертикальный пробел не работает:
\begin{tabularx}{5ex}{X}
text text \\[2ex]
x
\end{tabularx}
Подскажите, пожалуйста, как исправить код, чтобы он работал. Вариант, который я использую, (N - 1) * \baselineskip + 2ex
не подходит, так как он зависит от количества строк текста N
.
ОБНОВЛЕНИЕполный пример:
\documentclass{article}
\usepackage{tabularx}
\begin{document}
% code above
\end{document}
решение1
С tabularx
и cellspace
:
\documentclass{article}
\usepackage[column=O]{cellspace}% better, than {} aren't necessary
\setlength\cellspacetoplimit{2ex}
\setlength\cellspacebottomlimit{2ex}
\addparagraphcolumntypes{X}
\usepackage{tabularx} % "tabularx" had to be after "cellspace"
\begin{document}
\begin{tabularx}{5ex}{OX}
\hline
text text \\
\hline
x \\
\hline
\end{tabularx}
\end{document}
hline
s добавлены для лучшей видимости вертикальных расстояний)
В tabularray
комплекте:
\documentclass{article}
\usepackage{tabularray}
\begin{document}
\begin{tblr}{width=5ex,
hlines, % for better visibility of vertical distances
colspec = {X},
rowsep=2ex}
text text \\
x \\
\end{tblr}
\end{document}
Результат тот же, что и прежде.
Приложение:
Видимо, вопрос вообще не ясен. Из комментария ниже следует, что только между некоторыми рядами желательно увеличить расстояние между рядами. Самый простой способ сделать это — использовать \addlinespace[<desired space>]
:
\documentclass{article}
\usepackage{tabularx}
\usepackage{booktabs}
\begin{document}
\begin{tabularx}{5ex}{X}
text text \\
text text \\
\addlinespace[2ex] % you can omit this space, if its default value 3pt is ok
x \\
text text \\
\end{tabularx}
\end{document}
решение2
Вы можете использовать arraystretch
для растяжения ячеек в несколько раз <F>
:
\renewcommand\arraystretch{<F>}
где 1.0 — значение по умолчанию. Эффект асимметричен, но небольшие факторы работают нормально.
В дополнение к arraystretch
, также возможно вставлять и добавлять невидимые элементы до и после содержимого ячейки, например, вертикальные полосы нулевой длины с высотой и глубиной больше, чем одна строка текста. Полосы заставляют ячейки адаптироваться к такому содержимому, и вы получаете эффект увеличенного пространства.
Это можно автоматизировать при определении столбца. Если эффект необходимо отменить или изменить в определенной строке, используйте \multicolumn
с измененными настройками.
\documentclass{article}
\usepackage{tabularx}
\newcommand\upstrut[1][2ex]{\rule[1.5ex]{0pt}{#1}}
\newcommand\lostrut[1][2ex]{\rule[-#1]{0pt}{#1}}
\begin{document}
\begin{tabularx}{9ex}{>{\upstrut}X<{\lostrut}}
\hline
\multicolumn{1}{l}{\textbf{head}} \\
\hline
\multicolumn{1}{l<{\lostrut[4ex]}}{x} \\
text text \\
text text \\
text text \\
\multicolumn{1}{>{\upstrut[4ex]}l}{x} \\
\hline
\end{tabularx}
\end{document}
EDIT. Однако, как и вЖаркоответ, вы можете упростить ситуацию, используя tabularray
:
\documentclass{article}
\usepackage{tabularray}
\begin{document}
\begin{tblr}{
width = 9ex,
colspec = {X},
hline{1-2,Z},
row{3-Y} = {rowsep=2ex},
}
\textbf{head} \\
x \\
text text \\
text text \\
text text \\
x \\
\end{tblr}
\end{document}