Вертикальное расстояние между рядами таблиц

Вертикальное расстояние между рядами таблиц

Я пытаюсь увеличить расстояние между строками таблицы 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}

hlines добавлены для лучшей видимости вертикальных расстояний)

введите описание изображения здесь

В 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}

введите описание изображения здесь

Связанный контент