BITNP/BIThesis

[Bug]: `misc/tabularFontSize`不支持longtable

Closed this issue · 17 comments

发生了什么?

使用了longtable宏包,发现表格字号仍然是12点(小四),应该是10.5点(五号),并受misc/tabularFontSize影响。

整理

  • tabularFontSize调整字号—— #499#504
  • tabularRowSeparation调整行高—— #513
  • caption与表格上框线的间距—— #513
  • *.tex添加longtable示例—— #503 然后 @CZLeader 有空发PR

目前是这样实现的。

{
\zihao{5}
\begin{longtable}[htbp]{cccc}
…
\end{longtable}
}

建议之后所有表格都改为longtable

建议之后所有表格都改为longtable

因为longtable不跨页时正常显示,跨页时可以显示为续表。
建议将实例表格换成longtable,具体写法我给 @YDX-2147483647 发过

建议之后所有表格都改为longtable

因为longtable不跨页时正常显示,跨页时可以显示为续表。 建议将实例表格换成longtable,具体写法我给 @YDX-2147483647 发过

不过还要看学校的格式要求,即表格跨页时前后页如何标注

具体写法我给 @YDX-2147483647 发过

#503

建议之后所有表格都改为longtable

我反对。有时与其将表格切断,不如独占一页,那样还是普通表格好。

图片
图片

——幻灯片《漫谈 LaTeX 排版常见概念误区——别把 LaTeX 当 Word 用!

建议之后所有表格都改为longtable

我反对。有时与其将表格切断,不如独占一页,那样还是普通表格好。

但如果章节过短,使用table会导致表格被强制移动到其他章节。
这种显示模式有利有弊,我认为应该给予用户选择权,至少知情权

但如果章节过短,使用table会导致表格被强制移动到其他章节。
这种显示模式有利有弊,我认为应该给予用户选择权,至少知情权

有一定道理,不过我还是认为解决方法不在于改表格,而在于避免过短的章节。

我认为longtable应该只用于那种好几页的表格,比如罗列几十种材料的物理化学常数。一般同学用不到。

Overleaf文档也如此推荐:

If you have to insert a very long table, which takes up two or more pages in your document, use the longtable package.

但如果章节过短,使用table会导致表格被强制移动到其他章节。
这种显示模式有利有弊,我认为应该给予用户选择权,至少知情权

有一定道理,不过我还是认为解决方法不在于改表格,而在于避免过短的章节。

我认为longtable应该只用于那种好几页的表格,比如罗列几十种材料的物理化学常数。一般同学用不到。

Overleaf文档也如此推荐:

If you have to insert a very long table, which takes up two or more pages in your document, use the longtable package.

1、用到的同学会不知道
2、这文档没人看……建议在示例里面找个表格换,有必要我之后提个pull request,不过在此之前要确定格式
3、避免过短章节……三级小标题也算章节吧,不一定有多长

╮(╯_╰)╭

如果你想提PR,建议等 #498 合并了再加,并且不删除原有表格,因为那是学校模板有的。

╮(╯_╰)╭

如果你想提PR,建议等 #498 合并了再加,并且不删除原有表格,因为那是学校模板有的。

换一个成么,不跨页的话显示一样的

╮(╯_╰)╭
如果你想提PR,建议等 #498 合并了再加,并且不删除原有表格,因为那是学校模板有的。

换一个成么,不跨页的话显示一样的

不管了,之后提交pull request再请reviewer审核

#499 发现的 longtable 异常行距问题,在ctexbook文档类并不存在。

罪魁祸首:setspace宏包。它可能没重置longtable。

\RequirePackage[nodisplayskipstretch]{setspace}

Line spacing in longtable environment · Issue #2 · LaTeX-Package-Repositories/setspace

MWE
\documentclass{ctexbook}
% \usepackage{setspace}

\usepackage{longtable}
\usepackage{booktabs}

\begin{document}


\begin{table}[ht]
  \centering
  \caption{Tabular}
  \begin{tabular}{ccccc}
    \toprule
    项目    & 产量    & 销量    & 产值   & 比重    \\ \midrule
    手机    & 1000  & 10000 & 500  & 50\%  \\
    计算机   & 5500  & 5000  & 220  & 22\%  \\
    笔记本电脑 & 1100  & 1000  & 280  & 28\%  \\ \midrule
    合计    & 17600 & 16000 & 1000 & 100\% \\ \bottomrule
  \end{tabular}
\end{table}


\begin{longtable}[ht]{ccccc}
  \caption{Long table}                 \\
  \toprule
  项目    & 产量    & 销量    & 产值   & 比重    \\
  \midrule
  \endfirsthead
  \multicolumn{5}{l}{续表}               \\
  \toprule
  项目    & 产量    & 销量    & 产值   & 比重    \\
  \midrule
  \endhead
  \midrule
  \multicolumn{5}{r}{{续下页}}            \\
  \endfoot
  \bottomrule
  \endlastfoot
  手机    & 1000  & 10000 & 500  & 50\%  \\
  计算机   & 5500  & 5000  & 220  & 22\%  \\
  笔记本电脑 & 1100  & 1000  & 280  & 28\%  \\ \midrule
  合计    & 17600 & 16000 & 1000 & 100\% \\
\end{longtable}

\end{document}

可能的解决方案

\AtBeginEnvironment{longtable}{\singlespacing}

single spaced longtable with apa6 - TeX - LaTeX Stack Exchange

How to turn double spacing off in longtable? - TeX - LaTeX Stack Exchange

longtable表格上框线和caption有多余间距。这一问题在ctexbook也存在。

[doc] Missing doc for option strut (#71) · 议题 · Axel Sommerfeldt / caption · GitLab

% !TeX program = xelatex
% !BIB program = biber

% \documentclass[type=bachelor]{bithesis}

% <ctex>

\documentclass[zihao=-4]{ctexbook}
\usepackage{booktabs}

\usepackage[strut=off]{caption} % strut=off问题更明显
\captionsetup{belowskip=-5pt}  % 若无此行,只有几像素的区别,不测量很难看出;若有此行,则非常明显
\captionsetup[table]{skip=0em} % 只有取较小值时才有问题

% </ctex>

\usepackage{tabularx}
\usepackage{longtable}

\begin{document}

\begin{table}[ht]
  \centering
  \caption{\fbox{Tabular Lg}} % 都含“Lg”两个伸长的字母,控制变量
  \begin{tabular}{*{5}{>{\centering\arraybackslash}p{5em}}}
    \toprule
    项目    & 产量    & 销量    & 产值   & 比重    \\ \midrule
    手机    & 1000  & 10000 & 500  & 50\%  \\
    计算机   & 5500  & 5000  & 220  & 22\%  \\
    笔记本电脑 & 1100  & 1000  & 280  & 28\%  \\ \midrule
    合计    & 17600 & 16000 & 1000 & 100\% \\ \bottomrule
  \end{tabular}
\end{table}

\begin{table}[ht]
  \centering
  \caption{\fbox{Tabular* Lg}}
  \begin{tabular*}{32em}{@{\extracolsep{\fill}}ccccc}
    \toprule
    项目    & 产量    & 销量    & 产值   & 比重    \\ \midrule
    手机    & 1000  & 10000 & 500  & 50\%  \\
    计算机   & 5500  & 5000  & 220  & 22\%  \\
    笔记本电脑 & 1100  & 1000  & 280  & 28\%  \\ \midrule
    合计    & 17600 & 16000 & 1000 & 100\% \\ \bottomrule
  \end{tabular*}
\end{table}

\begin{table}[ht]
  \centering
  \caption{\fbox{Tabularx Lg}}
  \begin{tabularx}{32em}{*{5}{>{\centering\arraybackslash}X}}
    \toprule
    项目    & 产量    & 销量    & 产值   & 比重    \\ \midrule
    手机    & 1000  & 10000 & 500  & 50\%  \\
    计算机   & 5500  & 5000  & 220  & 22\%  \\
    笔记本电脑 & 1100  & 1000  & 280  & 28\%  \\ \midrule
    合计    & 17600 & 16000 & 1000 & 100\% \\ \bottomrule
  \end{tabularx}
\end{table}

\begin{longtable}[ht]{ccccc}
  \caption{\fbox{Long table Lg}}                 \\
  \toprule
  项目    & 产量    & 销量    & 产值   & 比重    \\
  \midrule
  \endfirsthead
  \multicolumn{5}{l}{续表}               \\
  \toprule
  项目    & 产量    & 销量    & 产值   & 比重    \\
  \midrule
  \endhead
  \midrule
  \multicolumn{5}{r}{{续下页}}            \\
  \endfoot
  \bottomrule
  \endlastfoot
  手机    & 1000  & 10000 & 500  & 50\%  \\
  计算机   & 5500  & 5000  & 220  & 22\%  \\
  笔记本电脑 & 1100  & 1000  & 280  & 28\%  \\ \midrule
  合计    & 17600 & 16000 & 1000 & 100\% \\
\end{longtable}

\end{document}

@CZLeader 如果你这几天有时间,要不从 #499#513 抽离出最小例子,发到 #503 就得了?因为改*.tex会给所有同学加上\usepackage{longtable},恐怕不太好。

已更新 #503