Linhas da tabela muito largas

Aug 20 2020

Eu criei uma tabela que parece boa. No entanto, para algumas linhas, o texto longo não é representado corretamente na tabela Latex.

Infelizmente, eles estão saindo da largura do bloco de texto. Existe uma maneira de quebrar automaticamente com base no comprimento?

\begin{table}[htbp]
\caption{Variable Descriptions}
\label{tab:2}
\begin{center}
    \begin{tabular}{|c|c|}\hline
    Variables & Descriptions\\\hline
    \textit{ln(wage)} & log of wage\\
    \textit{educ} & years of education, years of education, years of education, years of education, years of education\\
    \textit{black} & 1 if black and 0 if not\\
    \textit{hisp} & 1 if hispanic and 0 if not\\
    \textit{exper} & years of experience\\
    \textit{exper$^{2}$} & years of experience squared\\
    \textit{married} & 1 if married and 0 if not\\
    \textit{union} & 1 if belongs to a union and 0 if not\\\hline
    \end{tabular}
\end{center}
\end{table}

Aqui, como posso quebrar o texto para a linha que tem o texto "anos de estudo, anos de estudo, anos de estudo, anos de estudo, anos de estudo"?

Respostas

2 Mico Aug 20 2020 at 14:00

Ecoando o comentário anterior de @leandriis, gostaria de recomendar que você alterne de um tabularpara um tabularxambiente e empregue o Xtipo de coluna para a segunda coluna a fim de permitir a quebra automática de linha. Você deve se sentir à vontade para definir uma largura geral diferente de \textwidth; no exemplo abaixo, eu uso 0.8\textwidth.

Além disso, gostaria de sugerir que você (a) use alinhamento à esquerda em vez de centralizar para ambas as colunas, (b) forneça mais estrutura na tabela, colocando as quatro variáveis ​​fictícias em um grupo e dando-lhes um subtítulo , e (c) usar recuo suspenso na segunda coluna para melhorar a legibilidade.

Opcionalmente, você pode querer (d) omitir todas as regras verticais e usar algumas das macros de usuário do booktabspacote - \toprule, \midrule, \bottomrulee \addlinespace- para dar a mesa um "look" mais aberto e convidativo.

Separadamente, acho que parece um pouco desleixado usar um nome de variável como \textit{ln(wage)}. IMNSHO, $\ln(\textit{wage})$é preferível, pois usa letras verticais para "ln", bem como parênteses verticais.

\documentclass{article}
\usepackage{tabularx} % for 'tabularx' env. and 'X' col. type
\usepackage{ragged2e} % for \RaggedRight macro
\usepackage{booktabs} % for \toprule, \midrule etc macros
%% create a derivative column type called 'L':
\newcolumntype{L}{>{\RaggedRight\hangafter=1\hangindent=1.5em}X}
% How to typeset variable names:
\newcommand\vn[1]{\textit{#1}} 

\begin{document}
\begin{table}[htbp]
\centering
\caption{Variable Names and Descriptions\strut}
\label{tab:2}
\begin{tabularx}{0.8\textwidth}{@{} l L @{}}
\toprule
    Name          & Description\\
\midrule
    $\ln(\vn{wage})$ & logarithm of wage\\
    \vn{educ}     & years of education, years of education, years of education, years of education, years of education\\
    \vn{exper}    & years of experience\\
    \vn{exper$^{\,2}$}& years of experience squared\\
    \addlinespace
    \multicolumn{2}{@{}l}{Dummy variables:}\\
    \vn{black}    & 1 if black, 0 if not\\
    \vn{hisp}     & 1 if hispanic, 0 if not\\
    \vn{married}  & 1 if married, 0 if not\\
    \vn{union}    & 1 if belongs to a union, 0 if not\\
\bottomrule
\end{tabularx}
\end{table}
\end{document}

Adendo para abordar a consulta de acompanhamento do OP: A instrução

\begin{tabularx}{0.8\textwidth}{@{} l L @{}} 

inicia um tabularxambiente cuja largura total é 0.8\textwidthe que contém 2 colunas. A primeira coluna é do tipo l, que é um tipo de coluna LaTeX básico, para colunas cujo conteúdo deve ser alinhado à esquerda sem quebra de linha, e a segunda é do tipo L. O Ltipo de coluna é definido anteriormente na resposta por meio de uma \newcolumntypediretiva. O Ltipo de coluna é derivado do Xtipo de coluna que, por sua vez, é definido no tabularxpacote como um derivado do ptipo de coluna mais básico . Para nossos propósitos, as duas principais características do Xtipo de coluna são (i) ele permite a quebra de linha automaticamente conforme necessário (ao contrário do ltipo de coluna) e (ii) sua largura é calculada dinamicamente pelo LaTeX como um resíduo, viz. , como a diferença entre a largura total ou de destino do tabularxambiente (aqui 0.8\textwidth:) por um lado e as larguras de todas as outras colunas que podem estar presentes (aqui: apenas 1 coluna, cuja célula mais larga é definida pela palavra \vn{married}) mais qualquer espaços em branco entre colunas, por outro lado. (O Ltipo de coluna difere do Xtipo de coluna subjacente de duas maneiras: ele compõe seu conteúdo irregular em vez de totalmente justificado e implementa "recuo suspenso", começando com a segunda linha da célula.) Por fim, as duas @{}partículas servem para suprimir o preenchimento de espaço em branco que, de outra forma, seria inserido à esquerda da primeira coluna e à direita da coluna final.