垂直间距仅适用于第一行

垂直间距仅适用于第一行

有人偶然发现了一个奇怪的问题,并向我寻求帮助。她有一个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预期的方式改变结果:变音符号出现问题。尝试使用没有软件包的英文文本,babelfontenc仍然会出现同样的问题。我在手册中也没有找到任何提示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}

结果与以前类似:

在此处输入图片描述

相关内容