BITNP / BIThesis

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

[Bug]: 硕博模板书脊不适应长标题 #505

Closed YDX-2147483647 closed 1 month ago

YDX-2147483647 commented 2 months ago

发生了什么?

标题很长时,书脊的标题、姓名、学校会粘在一起。即使下面有空,也不往下挪。

IRYFQKT9E{}6E6_$W30 _33

你期望的结果

VXP$AU{{OJE9V`NJ3}7@ )I

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

足够长的标题:八月秋高风怒号卷我屋上三重茅茅飞渡江洒江郊高者挂罥长林梢下者飘转沉塘坳

相关代码

这俩\vfill有时无效,原因不明。

https://github.com/BITNP/BIThesis/blob/2f6cf63d054e67bc7a07948a02d2f03f5521a075/bithesis.dtx#L1929-L1931

YDX-2147483647 commented 2 months ago

临时解决方案

编辑bithesis.cls,搜索“书脊”,把上面提到的两处\vfill换成\vspace{1em}

YDX-2147483647 commented 2 months ago

给书脊的minipage环境套\fbox{…},发现框太小了。

图片 图片

https://github.com/tuna/thuthesis/blob/1ce3b32ff8b37a1ae1d12a0a58f82e6067281774/thuthesis.dtx#L6918-L6937

  \begingroup
    \noindent\hfill
    \rotatebox[origin=lt]{-90}{%
      \makebox[\textheight]{%
        \fangsong
        \addCJKfontfeatures*{RawFeature={vertical}}%
        \thu@spine@font
        \CJKmove
        #1\hfill
        \thu@stretch{4.5em}{#2}%
      }%
    }%
  \endgroup

\thu@stretch的功能:如果内容小于给定宽度,则拉伸至该宽度,否则取自然宽度。

https://github.com/tuna/thuthesis/blob/1ce3b32ff8b37a1ae1d12a0a58f82e6067281774/thuthesis.dtx#L4378-L4381

cjk - Vertical Chinese text with XeTeX - TeX - LaTeX Stack Exchange

fky2015 commented 2 months ago

距下边界均为 5cm 左右。

当时编写时参考的要求。

YDX-2147483647 commented 2 months ago

那上边距有要求吗?

Word模板 v.s. LaTeX模板

图片

fky2015 commented 1 month ago

那上边距有要求吗?

Word模板 v.s. LaTeX模板

图片

有要求,都是 5cm 左右

YDX-2147483647 commented 1 month ago
% 对齐中西基线
% https://tex.stackexchange.com/a/38585
\newcommand*\CJKmovesymbol[1]{\raise.35em\hbox{#1}}
\newcommand*\CJKmove{\punctstyle{plain}% do not modify the spacing between punctuations
  \let\CJKsymbol\CJKmovesymbol
  \let\CJKpunctsymbol\CJKsymbol}
% \begin{macro}{\make_paper_back:}
% 制作书脊。
%    \begin{macrocode}
\cs_new:Npn \make_paper_back: {
  \cleardoublepage
  \currentpdfbookmark{书脊}{frontmatter:paperback}
  \begin{titlepage}
    % 上下各留出规定的边距,到下一页再恢复
    \newgeometry{
      vmargin = 5cm,
    }
    \centering
    % 把盒子竖过来,盒子内相当于一行;再把汉字利用字体特性转回来。
    % 存在的问题:破折号断开
    \rotatebox[origin=lt]{-90}{
      % 实际使用时:\framebox → \makebox
      \framebox[\textheight]{
        \heiti\zihao{3}
        \addCJKfontfeatures*{RawFeature={vertical}}
        \CJKmove
        %
        % 标准例子:
        形状记忆聚氨酯的合成及其在织物中的应用
        %
        % 西文例子:
        % 形状记忆聚氨酯 \hspace{0.2em}
        % \rotatebox{90}{L} \hspace{0.2em}
        % \rotatebox{90}{T} \hspace{0.2em}
        % \rotatebox{90}{X} \hspace{0.2em}
        % 的合成Feng Kaiyu及其在织物中的应用
        %
        % 超长例子:
        % 八月秋高风怒号卷我屋上三重茅茅飞渡江洒江郊高者挂罥长林梢下者飘转沉塘坳
        \hspace{1em plus 1fill}
        杜甫
        \hspace{1em plus 1fill}
        北京理工大学
      }
    }
    \restoregeometry
  \end{titlepage}
}

图片 图片 图片

YDX-2147483647 commented 1 month ago

测量像素结果