在表格单元格中换行非英语文本

在表格单元格中换行非英语文本

我有一张长表格,表格中有很多单元格,几乎每个单元格内都有长文本。问题是非英语文本无法正确换行。

\documentclass[11pt, a4paper]{article}

\usepackage[T2A,T2B,T2C]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}
\begin{document} 

\begin{table}
\centering
 \begin{tabular}{ | m{1cm} | m{2.5cm} | m{2.5cm} | m{2.5cm} | m{2.5cm} | m{2.5cm} | m{2.5cm} | m{2.5cm} | m{2.5cm} | } %перенос слов в клетке частично работает только в первой строке

\hline
%\rowcolor{wordBlue}
\hline
\textbf{Text 1} & \textbf{Some Symbols} & \textbf{Long lines of code} & \textbf{Очень длинные строки, которые почему-то не переносяться корректно} & \textbf{Год} & \textbf{Разнообразные вариации чисел и букв 1234, новый номер 892473124} & \textbf{Text with some new default values.} & \textbf{Базовый текст, в котором могут быть смешаны letters and numbers in different languages + 2} & \textbf{Last column with which I have plenty of troubles and I need to fix} \\ 
\hline
\end{tabular}
\end{table}
\end{document}

我发现了一个窍门,如果我这样做

& ~\textbf{Last column with which I have plenty of troubles and I need to fix}

它可以工作,但是我有不需要的缩进。

答案1

第一个单词的连字符需要一个空格,即使是零。

这是一种用较少的投入来获得你想要的东西的方法。

我将其T2A作为最后一种编码,因为它是俄语的首选编码。你真的需要T2BandT2C吗?

\documentclass[a4paper,landscape]{article}

\usepackage[margin=1cm]{geometry} % to get landscape orientation
\usepackage[T2B,T2C,T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,russian]{babel}
\usepackage{array}

\newcolumntype{M}[1]{%
  >{\raggedright\arraybackslash\hspace{0pt}}
  m{#1}
}

\begin{document} 

\noindent
\begin{tabular}{ | m{1cm} | *{7}{M{2.5cm} |} >{\hyphenrules{english}}M{2.5cm} | }
\hline
%\rowcolor{wordBlue}
\hline
\bfseries Text 1 & 
  \bfseries Some Symbols & 
  \bfseries Long lines of code & 
  \bfseries Очень длинные строки, которые почему-то не переносяться корректно &
  \bfseries Год &
  \bfseries Разнообразные вариации чисел и букв 1234, новый номер 892473124 &
  \bfseries Text with some new default values. &
  \bfseries Базовый текст, в котором могут быть смешаны
    \foreignlanguage{english}{letters and numbers in different languages} + 2 &
  \bfseries Last column with which I have plenty of troubles and I need to fix \\ 
\hline
\end{tabular}

\end{document}

添加>{\hyphenrules{english}}仅使用英语的列。

在此处输入图片描述

答案2

一些评论:

  • 您的九列表格太宽,无法在普通页面上以纵向模式显示,即使边距非常窄。请考虑以横向模式排版表格材料,例如,通过加载包rotating并将表格材料放在sidewaystable环境中。

  • 即使表格材料设置为横向模式,如果将第 2 列至第 9 列的宽度设置为 2.5 厘米,表格材料也会太宽。我建议您使用环境tabularx而不是tabular环境,让 LaTeX 计算出使表格适合所需的列宽。

  • 如果要允许单词连字符,请加载ragged2e包并使用指令修改列类型>{\RaggedRight}。由于列将非常窄,因此最好将它们设置为右对齐模式,而不是“对齐”模式。

  • 下面的代码没有解决这个问题,但是值得思考:通过用粗体显示每一个标题单元格,你真的能得到什么吗?

在此处输入图片描述

\documentclass[11pt, a4paper]{article}

\usepackage[T2A,T2B,T2C]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,russian]{babel}

\usepackage{rotating,ragged2e,tabularx}
\newcolumntype{L}{>{\RaggedRight\arraybackslash\hspace{0pt}}X}

\begin{document} 

\begin{sidewaystable}
\begin{tabularx}{\textwidth}{ | p{1cm} | *{8}{L|} }
\hline
\textbf{Text 1} & 
\textbf{Some Symbols} & 
\textbf{Long lines of code} & 
\textbf{Очень длинные строки, которые почему-то не переносяться корректно} & 
\textbf{Год} & 
\textbf{Разнообразные вариации чисел и букв 1234, новый номер 892473124} & 
\textbf{Text with some new default values.} & 
\textbf{Базовый текст, в котором могут быть смешаны 
   letters and numbers in different languages + 2} & 
\textbf{Last column with which I have plenty of troubles and I need to fix} \\ 
\hline
\end{tabularx}
\end{sidewaystable}
\end{document}

相关内容