我尝试了几种不同的解决方案来解决 LaTeX 表格中的自动换行问题。下面是一个使用我迄今为止最复杂方法的表格列表示例。它在 PDF 中看起来没问题,但仍会引发几个警告。一两个条目可能仍然太长,以至于超出了指定的文本宽度,这意味着换行符无法按预期工作。如何在 LaTeX 表格中获得正确且可靠的自动换行?
\begin{center}
\begin{tabular*}{\columnwidth}{ @{\extracolsep{\fill}} p{0.5\columnwidth}p{0.5\columnwidth}}
Matrikel-Nr: & 1234567\\
E-Mail: & [email protected]\\
& \\
{\bf Seminar} & {\bf Dozent:in}\\
123456 Einführung in die Statistik mit R & Dr. Xxxxxx Xxxxxxxxx\\
123456 Einführung experimentelle Methoden & Dr. Xxxxxx Xxxxxxxxx\\
123456 Aufbaukurs quan\-ti\-ta\-ti\-ve Methoden & Dr. Xxxxxx Xx\-xxxx\-xxxxxxx\\
& \\
Xxxxxxxxx, \today & \\
\end{tabular*}
\end{center}
编译时我收到以下警告:
Underfull \hbox (badness 10000) in paragraph at lines 66--67
Underfull \hbox (badness 1122) in paragraph at lines 69--69
Underfull \hbox (badness 2582) in paragraph at lines 70--70
Overfull \hbox (17.99998pt too wide) in alignment at lines 64--74
(上面的片段对应于我的文件中的第 63-75 行)
前言:
\documentclass[twoside,openright,12pt]{report}
\usepackage{latexsym}
\usepackage[dvips]{graphics}
\usepackage{pgf}
\usepackage{multicol}
\usepackage[german]{babel}
\usepackage{linguex}
\usepackage{hyperref}
\usepackage{fontspec}
\usepackage{tabularx}
\usepackage{geometry}
\usepackage{lipsum}
\usepackage{booktabs}
\usepackage{array}
\usepackage{multirow}
\usepackage{makecell}
\setmainfont[BoldFont={Gentium Basic Bold},ItalicFont={Gentium Plus Italic}, BoldItalicFont={Gentium Basic Bold Italic}]{Gentium Plus}
\usepackage[scaled]{helvet}
\usepackage{apacite}
\usepackage{fancyhdr}
% set up page size.
\sloppy
\setlength{\textwidth}{15cm}
\setlength{\oddsidemargin}{42pt}
\setlength{\evensidemargin}{-22pt}
\setlength{\headheight}{15pt}
答案1
尝试使用tabularx
,它已加载到您的序言中。它将计算其正确的列宽,因此您不会收到有关 的警告Underfull \hbox ...
:
\documentclass[twoside,openright,12pt]{report}
\usepackage{geometry}
\usepackage{fontspec}
\setmainfont[BoldFont={Gentium Basic Bold},
ItalicFont={Gentium Plus Italic},
BoldItalicFont={Gentium Basic Bold Italic}%
]{Gentium Plus}
\usepackage[scaled=0.92]{helvet}
\usepackage{lipsum}
% tables
\usepackage{array, booktabs, makecell, multirow, tabularx}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\usepackage{hyperref} % had to be loaded last
\begin{document}
\lipsum[1]
\begin{center}
\begin{tabularx}{\linewidth}{ @{} LL @{}}
Matrikel-Nr: & 1234567 \\
E-Mail: & [email protected]\\
\addlinespace
\textbf{Seminar} & \textbf{Dozent: in} \\
123456 Einführung in die Statistik mit R
& Dr. Xxxxxx Xxxxxxxxx \\
123456 Einführung experimentelle Methoden
& Dr. Xxxxxx Xxxxxxxxx \\
123456 Aufbaukurs quan\-ti\-ta\-ti\-ve Methoden
& Dr. Xxxxxx Xx\-xxxx\-xxxxxxx \\
\addlinespace
Xxxxxxxxx, \today & \\
\end{tabularx}
\end{center}
\lipsum[2]
\end{document}
@leandriis 评论中已经解释了问题的原因。题外话:包hyperref
必须(极少数例外)在序言中最后加载。
答案2
要在表格条目中获得“自动换行符”,您需要使用p{
some-width-here }
(段落)列规范。