From 8945fbefa692481957c539b22894023041094626 Mon Sep 17 00:00:00 2001 From: Andrew Guschin Date: Sun, 22 Jun 2025 15:23:10 +0400 Subject: =?UTF-8?q?feat:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=BE=D1=84=D0=BE=D1=80=D0=BC=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B1=D0=BB=D0=BE=D0=BA=D0=BE=D0=B2=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=B4=D0=B0=20=D1=81=20=D0=B1=D0=B8=D0=B1=D0=BB=D0=B8?= =?UTF-8?q?=D0=BE=D1=82=D0=B5=D0=BA=D0=BE=D0=B9=20zebraw?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- conf.typ | 54 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/conf.typ b/conf.typ index 24ae5be..ec15411 100644 --- a/conf.typ +++ b/conf.typ @@ -1,4 +1,5 @@ #import "@preview/ctheorems:1.1.3": * +#import "@preview/zebraw:0.5.5": zebraw, zebraw-init /* * Примечания: @@ -59,6 +60,7 @@ undefined_spec: [*НЕИЗВЕСТНАЯ СПЕЦИАЛЬНОСТЬ*], ), ) + // Переменная отвечающая за размер отступа красной строки #let indent = 1.25cm #let font_size = 14pt @@ -68,6 +70,21 @@ #let space = [ ].func() #let sequence = [].func() +#let code_font_size = font_size - 2pt +// TODO: надо выяснить сколько нужно приплюсовывать к -indent без хардкода +#let code_block_move = -indent + 11pt + +#let code-block-raw(code) = { + set text(size: code_font_size) + // TODO: нужно выяснить почему нужно переоборачивать raw, чтобы размер был + // правильным + move(dx: code_block_move, zebraw(raw(block: true, code.text))) +} + +#let code-block(..args, code) = { + set text(size: code_font_size) + move(dx: code_block_move, zebraw(..args, code)) +} #let modules = ( /* @@ -393,27 +410,7 @@ show: thmrules.with(qed-symbol: $square$) show heading: self.document.apply_heading_styles - show raw.where(block: true): it => { - set par(justify: false) - grid( - columns: (100%, 100%), - column-gutter: -100% - 1em, - block( - width: 100%, - inset: 1em, - for (i, line) in it.text.split("\n").enumerate() { - box( - width: 0pt, - align(right, str(i + 1) + h(2em)), - ) - hide(line) - linebreak() - }, - ), - block(width: 100%, inset: 1em, it), - ) - } - + show raw.where(block: true): code-block-raw set par( // Выравнивание по ширине @@ -549,6 +546,11 @@ #let theorem = thm-format("theorem", "Теорема") #let proof = thmproof("proof", "Доказательство") +// TODO: по какой-то причине эта функция всегда вставляет пустую строку в конце +#let source-file(file) = { + raw(read(file), block: true) +} + /* * Точка входа, просто вызывает modules.document.make */ @@ -562,5 +564,13 @@ info.title = title info.type = type settings.title_page = settings.at("title_page", default: (:)) - (modules.document.make)(modules, info: info, settings, doc) + (modules.document.make)( + modules, + info: info, + settings, + [ + #show: zebraw-init.with(background-color: auto, hanging-indent: true) + #doc + ], + ) } -- cgit v1.2.3