![在表格单元格中换行非英语文本](https://linux22.com/image/325149/%E5%9C%A8%E8%A1%A8%E6%A0%BC%E5%8D%95%E5%85%83%E6%A0%BC%E4%B8%AD%E6%8D%A2%E8%A1%8C%E9%9D%9E%E8%8B%B1%E8%AF%AD%E6%96%87%E6%9C%AC.png)
我有一张长表格,表格中有很多单元格,几乎每个单元格内都有长文本。问题是非英语文本无法正确换行。
\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
作为最后一种编码,因为它是俄语的首选编码。你真的需要T2B
andT2C
吗?
\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}