Строки таблицы слишком широки

Aug 20 2020

Я создал таблицу, которая выглядит красиво. Однако для некоторых строк, содержащих длинный текст, не отображается должным образом в таблице Latex.

К сожалению, они выходят за пределы ширины текстового блока. Есть ли способ автоматически оборачивать в зависимости от длины?

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

Как я могу обернуть текст строки с текстом «годы обучения, годы обучения, годы обучения, годы обучения, годы обучения»?

Ответы

2 Mico Aug 20 2020 at 14:00

Повторяя предыдущий комментарий @leandriis, я хотел бы порекомендовать вам переключиться с a tabularна tabularxсреду и использовать Xтип столбца для второго столбца, чтобы обеспечить автоматический разрыв строки. Вы можете свободно устанавливать общую ширину, отличную от \textwidth; в приведенном ниже примере я использую 0.8\textwidth.

Кроме того, я хотел бы предложить вам (а) использовать выравнивание по левому краю, а не центрирование для обоих столбцов, (б) обеспечить большую структуру в таблице, поместив четыре фиктивных переменных в группу и предоставив им подзаголовок и (c) используйте выступ во втором столбце для улучшения разборчивости.

При желании, вы можете (d) опустить все вертикальные правила и использовать некоторые из пользовательских макросов в booktabsпакете - \toprule, \midrule, \bottomrule, и \addlinespace- дать таблице более открытый и гостеприимный «вид».

По отдельности, я считаю, что использование имени переменной, например \textit{ln(wage)}. IMNSHO, $\ln(\textit{wage})$предпочтительнее, поскольку в нем используются прямые буквы для «ln», а также прямые скобки.

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

Приложение для ответа на последующий запрос ОП: Инструкция

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

инициирует tabularxсреду, общая ширина которой равна 0.8\textwidthи которая содержит 2 столбца. Первый столбец имеет тип l, который является базовым типом столбца LaTeX, для столбцов, содержимое которых должно быть выровнено по левому краю без разрыва строки, а второй столбец типа L. Тип Lстолбца определяется ранее в ответе с помощью \newcolumntypeдирективы. Тип Lстолбца является производным от Xтипа столбца, который, в свою очередь, определяется в tabularxпакете как производная от более простого pтипа столбца. Для наших целей две основные характеристики типа Xстолбца: (i) он автоматически допускает разрыв строки по мере необходимости (в отличие от lтипа столбца) и (ii) его ширина динамически вычисляется LaTeX как невязка, а именно., как разница между общей или целевой шириной tabularxсреды (здесь 0.8\textwidth:), с одной стороны, и шириной всех других столбцов, которые могут присутствовать (здесь: только 1 столбец, самая широкая ячейка которого задается словом \vn{married}) плюс любые с другой стороны, пробелы между столбцами. (Тип Lстолбца отличается от нижележащего Xтипа столбца двумя способами: он набирает его содержимое неровно, а не полностью по ширине, и реализует «висячий отступ», начиная со второй строки ячейки.) Наконец, две @{}частицы служат для подавления заполнения пробелов, которые в противном случае были бы вставлены слева от первого столбца и справа от последнего столбца.