BITNP / BIThesis

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

[Bug]: `misc/tabularRowSeparation`错误地影响了矩阵 #498

Closed YDX-2147483647 closed 2 months ago

YDX-2147483647 commented 2 months ago

发生了什么?

https://github.com/BITNP/BIThesis/blob/2f6bf7eb7cc93cc45572fbd84c31260341e18861/templates/undergraduate-thesis/main.tex#L69-L70

https://github.com/BITNP/BIThesis/blob/2f6bf7eb7cc93cc45572fbd84c31260341e18861/bithesis.dtx#L1636

\arraystretch除了影响表格,还影响matrixbmatrix等环境,导致矩阵的行间距比正文还大。

你期望的结果

只改表格,不改矩阵。

问题复现的步骤(或者截图)

\documentclass[type=bachelor]{bithesis}

\BITSetup{
  misc = {
    % 微调表格行间距
    tabularRowSeparation = 1.25,
  },
}

\begin{document}

\frontmatter
\mainmatter

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

\begin{equation}
  \begin{bmatrix}
    1 & 0 \\
    1 & 0 \\
    1 & 0 \\
    1 & 0 \\
    1 & 0 \\
    1 & 0 \\
  \end{bmatrix}
\end{equation}

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

\end{document}

图片

操作系统或平台

None

LaTeX 发行版以及发行年份

No response

BIThesis 模板

No response

日志信息(可选)

No response

YDX-2147483647 commented 2 months ago

临时解决方案

回退 https://github.com/BITNP/BIThesis/commit/17398c5d2021690b593e1435cb09bc36a3a5cb47

具体来说,编辑main.tex,把\BITSetupmisc/tabularRowSeparation那行删掉吧。这样会换回默认值1

如果你同时要用表格,只能在每个table里加上\linespread{1.5}了。

\begin{table}[htbp]
  \linespread{1.5}
  \centering
  \caption{统计表}
…
YDX-2147483647 commented 2 months ago

智谱清言如是说

在LaTeX中,表格的行高是由多个因素决定的,主要包括:

  1. 基础行高(Baseline):这是文本行的标准行高,通常由文档的基础字体大小决定。
  2. 行距(Row Spacing):行距是指行与行之间的垂直距离,可以通过\arrayrulewidth命令来调整,这是表格线宽的一个参数。
  3. 单元格内容:单元格中的内容,如文本或图像,也会影响行高。文本内容的高度会占据一定的空间,图像的高度则直接添加到行高上。
  4. 单元格垂直填充(Cell Vertical Extras):每个单元格可以通过\vphantom命令添加垂直填充,这会影响整个行的垂直空间。
  5. 单元格属性:如\linespread命令,可以用来增加或减少单元格内文本的行高。
  6. 全局命令:如\renewcommand{\arraystretch}{factor},可以改变整个表格的行高,factor是一个倍数,表示行高要放大或缩小的比例。
  7. 表格环境的参数:例如tabular环境中的heighttotalheight参数,可以设置整个表格的高度。 要精确控制表格的行高,通常需要结合使用这些方法。如果需要调整特定行的行高,可能需要使用到\rule命令或者调整单元格内的文本或内容的尺寸。

在 LaTeX 中,matrix 环境中的行高主要由以下因素决定:

  1. 基础行高:默认情况下,LaTeX 会使用文档的基础行高,这通常是 12pt(对于标准的文档类)。
  2. 行间距matrix 环境中的行可以通过 \arraybackslash(或简写为 \tabcolsep)来调整行间距。这个参数默认情况下设置为 6pt,但可以自行设置。
  3. 内部排版matrix 环境内部,每个元素的大小也会影响行高。每个元素的高度取决于其字体大小和样式。
  4. 换行符:如果矩阵中的元素包含换行(例如使用 \text{} 包裹的多行文本),换行符的高度也会计入行高。
  5. 额外的间距:可以通过添加额外的间距命令(如 \vspace)来增加或减少行高。
  6. 行样式:如果使用了特殊的行样式,如粗体或斜体,这也会影响行高,因为这些样式会改变字体的尺寸。 要精确控制矩阵的行高,通常需要对上述因素进行细致的调整。下面是一个简单的例子,展示了如何使用 LaTeX 创建一个矩阵并调整其行高:
    \documentclass{article}
    \usepackage{amsmath}
    \begin{document}
    % 正常矩阵
    \begin{equation}
    \begin{pmatrix}
    a & b \\
    c & d
    \end{pmatrix}
    \end{equation}
    % 调整行高的矩阵
    \begin{equation}
    \begin{pmatrix}
    a & b \\
    [1ex] % 添加了 1ex 的行间距
    c & d
    \end{pmatrix}
    \end{equation}
    \end{document}

    在这个例子中,第二个矩阵的行高比第一个矩阵的要高,因为添加了 [1ex] 来增加行间距。注意,调整行高时可能需要考虑整体文档的排版和美观,确保排版效果符合预期。