Skip to content

Commit 2869f29

Browse files
feat: 渲染题名页时若发现行溢出,发出警告并提示换行
1 parent ef775e9 commit 2869f29

File tree

1 file changed

+34
-4
lines changed

1 file changed

+34
-4
lines changed

bithesis.dtx

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,19 @@
213213
% \end{macrocode}
214214
% \end{macro}
215215
%
216+
% \begin{macro}{\@@_warning_footer:n}
217+
% 用 l3msg 创建警告时,需后缀的内容。
218+
% 参数建议为 ⟨message⟩,即 |\msg_new:nnn| 系列函数的第二个参数。
219+
%
220+
% 之所以设置此函数,是因为 VS Code 插件 LaTeX Workshop 无法识别随意放置的 |\msg_line_context:|,只好专门适配。
221+
% https://github.com/James-Yu/LaTeX-Workshop/blob/c62e327b8233e20d61814bfda305811bea1ae83f/src/parse/parser/latexlog.ts#L17
222+
% \begin{macrocode}
223+
\cs_new:Npn \@@_warning_footer:n #1 {
224+
—The~“#1”\\warning~on~input~line~\msg_line_number:.
225+
}
226+
% \end{macrocode}
227+
% \end{macro}
228+
%
216229
% \begin{macro}{\@@_same_page:}
217230
% 取消换页。
218231
% \begin{macrocode}
@@ -2023,6 +2036,15 @@
20232036
}
20242037
% \end{macrocode}
20252038
% \end{macro}
2039+
2040+
% \begin{macro}{|@@_cover_entry_rendered_width:}
2041+
% 预估 |\@@_render_cover_entry:nn| 会占用的宽度,可用于判断行是否会溢出
2042+
% \begin{macrocode}
2043+
\cs_new:Nn \@@_cover_entry_rendered_width: {
2044+
\l_@@_cover_label_max_width_dim + 1ex + \l_@@_cover_value_max_width_dim
2045+
}
2046+
% \end{macrocode}
2047+
% \end{macro}
20262048
%
20272049
% \begin{macro}{|@@_get_text_width:Nn,\@@_get_text_width:NV}
20282050
% 计算 \#2 所占用的宽度,将结果存储在 \#1 中。
@@ -2103,6 +2125,12 @@
21032125
% \begin{macro}{\@@_render_cover_entry}
21042126
% 渲染封面信息项。此函数为主函数。
21052127
% \begin{macrocode}
2128+
\msg_new:nnn { bithesis } { render-cover-entry/overfull-hbox }
2129+
{
2130+
One~or~more~cover~entries~are~too~wide,~which~may~result~in~poor~layout.\\
2131+
To~fix~it,~please~split~long~entries~into~multiple~lines~by~inserting~“\c_backslash_str\c_backslash_str”.\\
2132+
\@@_warning_footer:n { render-cover-entry/overfull-hbox }
2133+
}
21062134
\cs_new:Npn \@@_render_cover_entry:N #1 {
21072135
% 左边是标签,右边是值。
21082136
% 形如:
@@ -2130,6 +2158,9 @@
21302158
% 在 value 两边加上空白,避免文本太靠边。
21312159
\dim_add:Nn \l_@@_cover_value_max_width_dim { \l_@@_cover_auto_width_padding_dim * 2 }
21322160
}
2161+
\dim_compare:nNnT { \linewidth } < { \@@_cover_entry_rendered_width: } {
2162+
\msg_warning:nn {bithesis} {render-cover-entry/overfull-hbox}
2163+
}
21332164

21342165

21352166
% 最后,根据宽度渲染 label 和 value 对。
@@ -2188,11 +2219,11 @@
21882219
% \begin{macro}{\@@_make_paper_back:}
21892220
% 制作书脊。
21902221
% \begin{macrocode}
2191-
% TODO: 使用统一方式警告
21922222
\msg_new:nnn { bithesis } { paper-back/missing-degree-type-icon-file }
21932223
{
21942224
Failed~to~find~the~file~for~degree~type~in~the~paper~back:~#1.\\
2195-
Please~download~from~https://github.com/BITNP/BIThesis/blob/main/templates/graduate-thesis/ #1.
2225+
Please~download~from~https://github.com/BITNP/BIThesis/blob/main/templates/graduate-thesis/ #1.\\
2226+
\@@_warning_footer:n { paper-back/missing-degree-type-icon-file }
21962227
}
21972228
\cs_new:Npn \@@_make_paper_back: {
21982229
\cleardoublepage
@@ -2757,8 +2788,7 @@
27572788
{\c_@@_label_author_tl} {\@@_secret_info_fixed:Nn \l_@@_value_author_tl {3}},
27582789
{\c_@@_label_student_id_tl} {\@@_secret_info:N \l_@@_value_student_id_tl},
27592790
{\c_@@_label_supervisor_tl} {\@@_secret_info_fixed:Nn \l_@@_value_supervisor_tl {5}},
2760-
% co-supervisor 并非所有人都有,由最终作者自行处理
2761-
{\c_@@_label_co_supervisor_tl} {\@@_secret_info:N \l_@@_value_external_supervisor_tl},
2791+
{\c_@@_label_co_supervisor_tl} {\@@_secret_info_fixed:Nn \l_@@_value_external_supervisor_tl {5}},
27622792
}
27632793

27642794
\@@_render_cover_entry:N \l_@@_input_clist

0 commit comments

Comments
 (0)