Espaço vertical entre linhas da tabela

Espaço vertical entre linhas da tabela

Estou tentando aumentar o espaço entre as linhas da tabularxtabela. O código a seguir funciona bem e faz o que eu quero:

\begin{tabularx}{5ex}{X}
    text \\[2ex]
    x
\end{tabularx}

No entanto, se o texto for muito longo e não couber em uma linha, o espaço vertical não funcionará:

\begin{tabularx}{5ex}{X}
    text text \\[2ex]
    x
\end{tabularx}

Por favor, diga-me como posso corrigir o código para que funcione. A variante a utilizar (N - 1) * \baselineskip + 2exnão é adequada, pois depende do número de linhas do texto N.

Atualizaçãoexemplo completo:

\documentclass{article}

\usepackage{tabularx}

\begin{document}
    % code above
\end{document}

Responder1

Com tabularxe 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 são adicionados para melhor visibilidade das distâncias verticais)

insira a descrição da imagem aqui

Com tabularraypacote:

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

O resultado é o mesmo de antes.

Termo aditivo:
Aparentemente, a questão não está nada clara. Segue-se do comentário abaixo que apenas entre algumas linhas é desejado aumentar a distância entre as linhas. A maneira mais simples de fazer isso é usar \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}

insira a descrição da imagem aqui

Responder2

Você poderia usar arraystretchpara esticar as células por um fator <F>:

\renewcommand\arraystretch{<F>}

com 1.0 sendo o padrão. O efeito é assimétrico, mas pequenos fatores funcionam bem.

Além disso arraystretch, também é possível inserir e anexar elementos invisíveis antes e depois do conteúdo da célula, como barras verticais de comprimento zero com altura e profundidade maiores que uma única linha de texto. As barras fazem com que as células se adaptem a tal conteúdo e você ganha um efeito de aumento de espaço.

Isso pode ser automatizado na definição da coluna. Se o efeito precisar ser cancelado ou alterado em uma linha específica, use \multicolumncom configurações alteradas.

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

insira a descrição da imagem aqui


EDITAR. No entanto, como emZarkoresposta, você pode simplificar as coisas empregando 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}

insira a descrição da imagem aqui

informação relacionada