Righe della tabella troppo larghe

Aug 20 2020

Ho creato un tavolo che sembra carino. Tuttavia, per alcune righe con testo lungo non viene rappresentato correttamente nella tabella Latex.

Sfortunatamente, stanno uscendo dalla larghezza del blocco di testo. C'è un modo per avvolgere automaticamente in base alla lunghezza?

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

Qui come posso racchiudere il testo per la riga contenente il testo "anni di istruzione, anni di istruzione, anni di istruzione, anni di istruzione, anni di istruzione"?

Risposte

2 Mico Aug 20 2020 at 14:00

Facendo eco al commento precedente di @leandriis, vorrei consigliarti di passare da a tabulara un tabularxambiente e di utilizzare il Xtipo di colonna per la seconda colonna per consentire l' interruzione di riga automatica. Dovresti sentirti libero di impostare una larghezza complessiva diversa da \textwidth; nell'esempio seguente, utilizzo 0.8\textwidth.

Inoltre, vorrei suggerire di (a) utilizzare l'allineamento a sinistra piuttosto che il centraggio per entrambe le colonne, (b) fornire più struttura nella tabella posizionando le quattro variabili fittizie in un gruppo e dare loro un'intestazione secondaria e (c) utilizzare una rientranza sporgente nella seconda colonna per migliorare la leggibilità.

Opzionalmente, si può decidere di (d) omettere tutte le regole verticali e utilizzare alcune delle macro utente del booktabspacchetto - \toprule, \midrule, \bottomrule, e \addlinespace- per dare al tavolo un "look" più aperto e invitante.

Separatamente, penso che sembri un po 'sciatto usare un nome di variabile come \textit{ln(wage)}. IMNSHO, $\ln(\textit{wage})$è da preferire in quanto utilizza lettere verticali per "ln" e parentesi verticali.

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

Addendum per affrontare la domanda successiva dell'OP: l'istruzione

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

avvia un tabularxambiente la cui larghezza complessiva è 0.8\textwidthe che contiene 2 colonne. La prima colonna è di tipo l, che è un tipo di colonna LaTeX di base, per colonne il cui contenuto deve essere allineato a sinistra senza interruzioni di riga, e la seconda è di tipo L. Il Ltipo di colonna è definito in precedenza nella risposta tramite una \newcolumntypedirettiva. Il Ltipo di colonna è derivato dal Xtipo di colonna che, a sua volta, è definito nel tabularxpacchetto come derivato del ptipo di colonna più semplice . Per i nostri scopi, le due caratteristiche principali del Xtipo di colonna sono (i) consente automaticamente l'interruzione di riga secondo necessità (a differenza del ltipo di colonna) e (ii) la sua larghezza è calcolata dinamicamente da LaTeX come residuo, vale a dire. , come la differenza tra la larghezza complessiva o di destinazione tabularxdell'ambiente (qui:) 0.8\textwidthda un lato e le larghezze di tutte le altre colonne che possono essere presenti (qui: solo 1 colonna, la cui cella più larga è impostata dalla parola \vn{married}) più qualsiasi spazio bianco intercolonna d'altra parte. (Il Ltipo di colonna differisce dal Xtipo di colonna sottostante in due modi: compone il suo contenuto irregolare a destra invece che completamente giustificato, e implementa un "rientro sporgente", a partire dalla seconda riga della cella.) Infine, le due @{}particelle servono per sopprimere la spaziatura interna degli spazi che altrimenti verrebbe inserita a sinistra della prima colonna ea destra della colonna finale.