有人偶然发现了一个奇怪的问题,并向我寻求帮助。她有一个tabular
环境,想增加表格行之间的垂直间距。我建议她使用,\\[1.2ex]
如果她愿意的话。令我惊讶的是,这只对第一行有效,其他行都\\[1.2ex]
被忽略了,没有任何警告或错误消息。
我可以将其归结为加载array
包裹。
这是一个 MWE,它将产生所请求的结果
\documentclass[draft]{scrartcl}
\usepackage[ngerman]{babel} % 1) German Orthography
\usepackage[T1]{fontenc} % 2) Output font encoding
% \usepackage{array} % 3) More Control over table layouts
% \newcolumntype{H}{>{\footnotesize}c}
\begin{document}
\begin{tabular}{@{} llp{10cm} @{}}
% \multicolumn{1}{@{} H}{Nummer} & \multicolumn{1}{H}{Name} & \multicolumn{1}{H@{}}{Inhalt}\\
Nr. & Name & Inhalt \\
1 & Einleitung & Kontext, Problem und Aufgabenstellung, Ziele\\[2ex]
2 & Theorie & Stand der Technik, Möglichkeiten der Versuchsumsetzung, vorangehende Versuche, Vor- und Nachteile, Absehbare Probleme\\[2ex]
3 & Versuchsaufbau & Konkrete Umsetzung, Material und Aufbau, Randbedingungen, beteiligte Personen\\[2ex]
4 & Durchführung & Durchführen des Versuches und Sammeln von Messdaten, Dokumentation, Fehlerquellen\\[2ex]
5 & Auswertung & Analyse der Messdaten, Mathematische Berechnungen (Konfidenzintervall, Fehlerfortpflanzung, \dots), Was bedeuten Ergebnisse für Versuch\\[2ex]
6 & Interpretation & Wie können Ergebnisse zukünftige Forschung beeinflussen, Wurde Ziel erreicht?\\[2ex]
7 & Fazit & Zusammenfassung aller vorherigen Kapitel, abschließende Bewertung\\[2ex]
\end{tabular}
\end{document}
(为了使观点在视觉上更加清晰,上面的 MWE 使用\\[2ex]
而不是\\[1.2ex]
。额外垂直空间的大小对这个问题没有影响。)
现在,通过加载包稍微改变一下上面的例子array
。
\documentclass[draft]{scrartcl}
\usepackage[ngerman]{babel} % 1) German Orthography
\usepackage[T1]{fontenc} % 2) Output font encoding
\usepackage{array} % 3) More Control over table layouts
% \newcolumntype{H}{>{\footnotesize}c}
\begin{document}
\begin{tabular}{@{} llp{10cm} @{}}
% \multicolumn{1}{@{} H}{Nummer} & \multicolumn{1}{H}{Name} & \multicolumn{1}{H@{}}{Inhalt}\\
Nr. & Name & Inhalt \\
1 & Einleitung & Kontext, Problem und Aufgabenstellung, Ziele\\[2ex]
2 & Theorie & Stand der Technik, Möglichkeiten der Versuchsumsetzung, vorangehende Versuche, Vor- und Nachteile, Absehbare Probleme\\[2ex]
3 & Versuchsaufbau & Konkrete Umsetzung, Material und Aufbau, Randbedingungen, beteiligte Personen\\[2ex]
4 & Durchführung & Durchführen des Versuches und Sammeln von Messdaten, Dokumentation, Fehlerquellen\\[2ex]
5 & Auswertung & Analyse der Messdaten, Mathematische Berechnungen (Konfidenzintervall, Fehlerfortpflanzung, \dots), Was bedeuten Ergebnisse für Versuch\\[2ex]
6 & Interpretation & Wie können Ergebnisse zukünftige Forschung beeinflussen, Wurde Ziel erreicht?\\[2ex]
7 & Fazit & Zusammenfassung aller vorherigen Kapitel, abschließende Bewertung\\[2ex]
\end{tabular}
\end{document}
如您所见,只有第一个\\[2ex]
被执行,而其他所有\\[2ex]
都被忽略。日志文件没有给出任何警告或错误。
本示例于 2021 年底在 TeXLive 上制作,使用 v2.5c 版本的 array.sty
\ProvidesPackage{array}[2020/10/01 v2.5c 表格扩展包 (FMi)] 使用
lualatex
代替pdflatex
没有任何区别。
(删除软件包babel
将以fontenc
预期的方式改变结果:变音符号出现问题。尝试使用没有软件包的英文文本,babel
但fontenc
仍然会出现同样的问题。我在手册中也没有找到任何提示array
。)
答案1
我不知道为什么array
包会造成这样的危害,但是为了在单元格内容周围添加更多垂直空间,最好使用专用包在单元格内容上方/下方添加垂直空间。例如,makecell
定义宏的包\makegapedcells
:
\documentclass[draft]{scrartcl}
\usepackage[ngerman]{babel} % 1) German Orthography
\usepackage[T1]{fontenc} % 2) Output font encoding
\usepackage{makecell} % 3) More Control over table layouts
\setcellgapes{5pt}
\makegapedcells
\begin{document}
\begin{tabular}{@{} llp{10cm} @{}}
Nr. & Name
& Inhalt \\
1 & Einleitung
& Kontext, Problem und Aufgabenstellung, Ziele \\
2 & Theorie
& Stand der Technik, Möglichkeiten der Versuchsumsetzung, vorangehende Versuche, Vor- und Nachteile, Absehbare Probleme \\
3 & Versuchsaufbau
& Konkrete Umsetzung, Material und Aufbau, Randbedingungen, beteiligte Personen \\
4 & Durchführung
& Durchführen des Versuches und Sammeln von Messdaten, Dokumentation, Fehlerquellen \\
5 & Auswertung
& Analyse der Messdaten, Mathematische Berechnungen (Konfidenzintervall, Fehlerfortpflanzung, \dots), Was bedeuten Ergebnisse für Versuch \\
6 & Interpretation
& Wie können Ergebnisse zukünftige Forschung beeinflussen, Wurde Ziel erreicht? \\
7 & Fazit
& Zusammenfassung aller vorherigen Kapitel, abschließende Bewertung
\end{tabular}
\end{document}
或cellspace
定义宏的包
\setlength\cellspacetoplimit{...}
\setlength\cellspacebottomlimit{...}
为了在选定的列中使用它们,您需要使用选项扩展列规范S
(默认,但您可以根据表的具体情况重命名它)或者C
,如果在表中使用包S
中定义的列siunitx
。
在你的情况下,MWE 可以是:
\documentclass[draft]{scrartcl}
\usepackage[ngerman]{babel} % 1) German Orthography
\usepackage[T1]{fontenc} % 2) Output font encoding
\usepackage{cellspace} % better, than {} aren't necessary
\setlength\cellspacetoplimit{5pt}
\setlength\cellspacebottomlimit{5pt}
\begin{document}
\begin{tabular}{@{} Sl S l S{p{10cm}} @{}}
% table body is the same as before
\end{tabular}
\end{document}
但是您可能喜欢tabularray
包,它定义了(除其他外)命令rowsep
,您可以使用该命令简单地更改表格行之间的间距。以下示例中,第三列使用的X
列类型使表格宽度等于(如果使用表格,\textwidth
则类似):tabularx
\documentclass[draft]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{tabularray}
\begin{document}
\noindent\begin{tblr}{
colspec = {@{} l l X[j] @{}},
row{2-Z} = {rowsep=5pt}, % add space between table body rows
}
% table body is the same as before
\end{tblr}
\end{document}
结果与以前类似: