Ver Fonte

титульный лист: личная подпись студента над чертой

Картинка подписи лежит в .private/signature.png (в .gitignore, в git
не попадает) и вставлена через новый параметр signature у field():
нулевая строка сетки над чертой, раскладка не меняется. Без файла
подписи или при signature: none остаётся пустая черта.
xander há 1 semana atrás
pai
commit
3f2b57c4b7
1 ficheiros alterados com 23 adições e 4 exclusões
  1. 23 4
      title-page.typ

+ 23 - 4
title-page.typ

@@ -39,12 +39,31 @@
 #let label-gap = 2.8mm      // зазор от черты до подписи
 #let label-lift = 10.5pt    // компенсация верхнего интервала строки подписи
 
-#let field(value, label, width: 100%) = box(width: width)[
+// ── Личная подпись студента ─────────────────────────────────────────────
+// Файл лежит в .private/ (исключён в .gitignore) и в git не попадает.
+#let student-signature = ".private/signature.png"
+#let signature-height = 7mm // высота картинки подписи
+#let signature-gap = 1mm    // зазор между подписью и чертой
+
+// Единый помощник. Одна и та же геометрия у всех полей листа:
+// черты соседних полей всегда лежат на одной горизонтали, подпись —
+// всегда под чертой на одинаковом расстоянии.
+//   value = none → пустая черта (для подписи), требуется width;
+//   signature   → картинка подписи над пустой чертой.
+#let field(value, label, width: 100%, signature: none) = box(width: width)[
   #grid(
     columns: 100%,
     inset: 0pt,
     align: center + top,
-    rows: (slot-height, auto),
+    rows: (0pt, slot-height, auto),
+    // строка нулевой высоты: подпись висит над чертой, ничего не сдвигая
+    [
+      #if signature != none [
+        #move(dy: blank-line-dy - signature-gap - signature-height)[
+          #align(center)[#image(signature, height: signature-height)]
+        ]
+      ]
+    ],
     // черта со значением (или пустая черта для подписи)
     [
       #if value == none [
@@ -111,7 +130,7 @@
 #table(
   columns: (34mm, 49mm, 8mm, 27mm, 11mm, 41mm),
   stroke: none,
-  inset: (x: 0pt, y: 2.2mm),
+  inset: (x: 0pt, y: 3.2mm),
   align: (left, center, center, center, center, center),
 
   table.cell(colspan: 2)[Преподаватель],
@@ -123,7 +142,7 @@
   [Студент],
   field(task.group, [номер группы, зачетной книжки]),
   [],
-  field(none, [подпись, дата], width: 27mm),
+  field(none, [подпись, дата], width: 27mm, signature: student-signature),
   [],
   field(task.student_short_name, [инициалы, фамилия]),
 )