BITNP / BIThesis

📖 北京理工大学非官方 LaTeX 模板集合,包含本科、研究生毕业设计模板及更多。🎉 (更多文档请访问 wiki 和 release 中的手册)
https://bithesis.bitnp.net
LaTeX Project Public License v1.3c
676 stars 100 forks source link

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

Open CZLeader opened 2 months ago

CZLeader commented 2 months ago

发生了什么?

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

整理

CZLeader commented 2 months ago

目前是这样实现的。

{
\zihao{5}
\begin{longtable}[htbp]{cccc}
…
\end{longtable}
}
CZLeader commented 2 months ago

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

CZLeader commented 2 months ago

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

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

CZLeader commented 2 months ago

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

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

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

YDX-2147483647 commented 2 months ago

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

503

YDX-2147483647 commented 2 months ago

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

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

图片 图片

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

CZLeader commented 2 months ago

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

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

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

YDX-2147483647 commented 2 months ago

但如果章节过短,使用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.

CZLeader commented 2 months ago

但如果章节过短,使用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、避免过短章节……三级小标题也算章节吧,不一定有多长

YDX-2147483647 commented 2 months ago

╮(╯_╰)╭

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

CZLeader commented 2 months ago

╮(╯_╰)╭

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

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

CZLeader commented 2 months ago

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

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

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

YDX-2147483647 commented 1 month ago

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

YDX-2147483647 commented 1 month ago

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

https://github.com/BITNP/BIThesis/blob/9b315eebed82f7ff15e4f9277ab4ab501aa66d2e/bithesis.dtx#L958

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

MWE ```latex \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

YDX-2147483647 commented 1 month ago

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}
YDX-2147483647 commented 2 weeks ago

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