Разрыв строки с подчеркиванием в longtable

Разрыв строки с подчеркиванием в longtable

У меня есть следующий код:

\begin{landscape}

\setlength\tabcolsep{3pt}
\begin{longtable}{m{0.5cm}|m{3cm}|m{3cm}|m{3cm}|m{9cm}}
\hline
\textbf{C1}&\textbf{Col2}&\textbf{Col3}&\textbf{Col4}&\textbf{Col5}\\
\hline
\endfirsthead
\endfoot
1&Self-report&-&D\_alcohol\_consumption&\\\hline
2&Self-report&-&Trastorno del pensamiento controlado&\\\hline
3&Self-report&-&D-alcohol-consumption&\\\hline
\end{longtable} 

\end{landscape}

Он создает эту таблицу

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

Мне нужно поместить очень длинные имена переменных в столбец "Col4", и многие из них имеют подчеркивания, как в первой строке. Но они не помещаются в ячейку и простираются до "Col5". Я ожидаю, что строка будет автоматически разорвана, как во второй строке.

Я думаю, что это что-то связанное с подчеркиванием, потому что в третьей строке я заменил их на дефисы, и это то, что я ожидал. Но мне нужно использовать подчеркивание.

Есть ли предложения по сохранению подчеркиваний?

решение1

По сути, и, возможно, это неудивительно, никто до сих пор не объяснил LaTeX, как расставлять дефисы в слове «word».

D\_alcohol\_consumption

К счастью, есть простой способ сообщить LaTeX, что он может рассматривать подстроку consumptionкак отдельное слово: просто замените D\_alcohol\_consumptionна

D\_alcohol\_\hspace{0pt}consumption

Отдельный комментарий: По умолчанию LaTeX не делает переносов в словах, содержащих один или несколько экземпляров -(символа дефиса). Если вы хотите разрешить LaTeX делать переносы в слове consumptionв составе дефисного слова D-alcohol-consumption, вам нужно просто переписать его как

D-alcohol-\hspace{0pt}consumption

Последний комментарий: Ввиду узости некоторых столбцов я бы использовал макет ragged-right для этих столбцов вместо полного выравнивания (которое используется по умолчанию), при этом все еще допуская переносы, когда это необходимо. Этого можно добиться автоматически, добавив к спецификатору столбца префикс >{\RaggedRight}; см. код ниже, чтобы узнать, как реализовать эту идею. (Если вы действительно хотите отключить переносы, просто замените >{\RaggedRight}на >{\raggedright\arraybackslash}.


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

\documentclass{article}
\usepackage{array}
\usepackage{ragged2e} % for '\RaggedRight' macro
\begin{document}

\begin{tabular}{@{} >{\RaggedRight}p{3.1cm} @{}}
\hline
D\_alcohol\_\hspace{0pt}consumption \\ \hline
D-alcohol-consumption \\               \hline
D-alcohol-\hspace{0pt}consumption \\   \hline
\end{tabular}

\end{document}

решение2

Я разобрался с помощью пакета hyphenat

\usepackage{hyphenat}
\begin{landscape}

\setlength\tabcolsep{3pt}
\begin{longtable}{m{0.5cm}|m{3cm}|m{3cm}|m{3cm}|m{9cm}}
\hline
\textbf{C1}&\textbf{Col2}&\textbf{Col3}&\textbf{Col4}&\textbf{Col5}\\
\hline
\endfirsthead
\endfoot
1&Self-report&-&D\_alcohol\_consumption&\\\hline
2&Self-report&-&Trastorno del pensamiento controlado&\\\hline
3&Self-report&-&D-alcohol-consumption&\\\hline
\end{longtable}

\end{landscape}

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

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