.pn 0 \######################################################################### .nr title_size_increase 2 .nr space_after_title 1 \######################################################################### .nr paragraph_indentation 2.3 \######################################################################### .nr heading_current_number_1 0 .nr heading_current_number_2 0 .nr heading_current_number_3 0 .nr heading_current_number_4 0 .ds heading_style DIGIT \######################################################################### .nr footnote_current_number 0 .nr footnote_point_size_reduction 1 .nr footnote_vertical_spacing_reduction 1 .nr footnote_space_between_line_and_first_footnote 0.2 \######################################################################### .ds show_header yes .ds show_footer yes \######################################################################### .nr current_problem_number 1 .ds problem_string Problem .ds solution_string Solution \######################################################################### .nr current_theorem_number 1 .rm current_theorem_string .ds theorem_string Theorem .ds proof_string Proof \######################################################################### .nr header_text_from_top_spacing 1 .nr header_line_from_text_spacing 0 .nr header_real_text_from_line_spacing 1 .nr header_horizontal_line 1 .nr header_horizontal_line_thickness 0.5p \######################################################################### .nr indentation_is_by_how_much 4u \######################################################################### .nr list_padding 0.2 \######################################################################### .nr superscript_size_decrease 3 .nr subscript_size_decrease 3 \######################################################################### .ds [. [ .ds .] ] \######################################################################### .ds bibliography_string Bibliography .nr space_from_top_to_bibliography_string 3 .nr space_from_bibliography_string_to_references 5 \######################################################################### \######################################################################### \######################################################################### \######################################################################### \######################################################################### \######################################################################### \######################################################################### \######################################################################### .de set_footnote_environment .ev footnote_environment .vs -\\n[footnote_vertical_spacing_reduction] .ps -\\n[footnote_point_size_reduction] .ev .. \######################################################################### .de place_footer_trap .wh -3v breakpage .wh -2v footer_trap_macro .. \######################################################################### .de place_header_trap .wh 0 paste_header .. \######################################################################### .de remove_footer_trap .wh -3v .wh -2v .. \######################################################################### .de remove_header_trap .wh 0 .. \######################################################################### .de place_ordinary_traps .place_header_trap .place_footer_trap .. \######################################################################### .de place_decoration .place_ordinary_traps .. \######################################################################### .de remove_decoration .remove_header_trap .remove_footer_trap .. \######################################################################### .de start .set_footnote_environment .place_ordinary_traps .. \######################################################################### .de finish .references \#.plainpage end .. \######################################################################### .de paragraph .ti \\n[paragraph_indentation] .. \######################################################################### .de list .ie '\\$1'end' \{\ .nr list_indentation 0 .br \} .el \{\ .nr list_indentation 1 .br \} .. \######################################################################### .de item .br \\n[list_indentation]) .nr list_indentation +1 .. \######################################################################### .de mark_item .if !'\\$1'' \{\ .nr \\$1 \\n[list_indentation]-1 \} .. \######################################################################### .de heading .br .ie '\\*[heading_style]'NONE' \{\ \f[B] \\$1 \f[] \} .el .if '\\*[heading_style]'DIGIT' \{\ \f[B] .if \\$2<=1 \{\ .nr heading_current_number_1 +1 .nr heading_current_number_2 0 .nr heading_current_number_3 0 .nr heading_current_number_4 0 \\n[heading_current_number_1]. \} .if '\\$2'2' \{\ .nr heading_current_number_2 +1 .nr heading_current_number_3 0 .nr heading_current_number_4 0 \\n[heading_current_number_1].\\n[heading_current_number_2]. \} .if '\\$2'3' \{\ .nr heading_current_number_3 +1 .nr heading_current_number_4 0 \\n[heading_current_number_1].\\n[heading_current_number_2].\\n[heading_current_number_3]. \} .if '\\$2'4' \{\ .nr heading_current_number_4 +1 \\n[heading_current_number_1].\\n[heading_current_number_2].\\n[heading_current_number_3].\\n[heading_current_number_4]. \} \\$1 \f[] \} .br .. \######################################################################### .de mark_heading .if !'\\$1'' \{\ .if heading_current_number>0 \{\ .nr \\$1 \\n[heading_current_number]-1 \} \} .. \######################################################################### .de title_space .if !d title_space_has_been_outputed \{\ .br .sp 10 .ds title_space_has_been_outputed "yes" \} .. \######################################################################### .de title .title_space .ce 9999 .ps +\\n[title_size_increase] \f[B] \\$1 \f[] .ps -\\n[title_size_increase] .sp 2 .ce 0 .ds title_string \\$1 .if !d header_right \{\ .ds header_right \\*[title_string] \} . .. \######################################################################### .de author .ce 9999 \\$1 .if !'\\$2'' \{\ .ps -1 \\$2 .ps +1 \} .sp 1 .ce 0 . .ds author_string \\$1 . .if !d header_left \{\ .ds header_left \\*[author_string] \} .. \######################################################################### .de footnote .ie '\\$1'end' \{\ .boxa .ev .ie !d there_is_a_footnote \{\ .ds there_is_a_footnote "yes" .nr current_footnote_height 4v .wh -(\\n[current_footnote_height]u+\\n[dn]u) paste_footnote .nr current_footnote_height +\\n[dn]u \} .el \{\ .wh -\\n[current_footnote_height]u .wh -(\\n[current_footnote_height]u+\\n[dn]u) paste_footnote .nr current_footnote_height +\\n[dn]u \} \} .el \{\ .nr footnote_current_number +1 .superscript \\n[footnote_current_number] .ev footnote_environment .boxa footnote_text \\n[footnote_current_number]. \} .. \######################################################################### .de mark_footnote .if !'\\$1'' \{ .ds \\$1 \\n[footnote_current_number] \} .. \######################################################################### .de paste_footnote \# divert possible unfinished line .di footnote_text_unfinished_text_hold .di .ie d footnote_text \{\ \# separator \l'1i' .br .sp \n[footnote_space_between_line_and_first_footnote] .ds footnote_start_flag "yes" .footnote_text .rm footnote_text .rm footnote_start_flag .ie dfooter_start_flag \{\ .di .di footnote_text .footnote_text_hold .br .rm footnote_text_hold .rm footer_start_flag .di .paste_footer \} .el \{\ .rm footnote_text .rm there_is_a_footnote .bp \} \} .el \{ .bp .footnote_text_unfinished_text_hold .rm footnote_text_unfinished_text_hold \} .wh -\\n[current_footnote_height]u .rm current_footnote_height .. \######################################################################### .de footer_trap_macro .ie d footnote_start_flag \{\ .ds footer_start_flag "yes" .di footnote_text_hold \} .el \{\ .di footnote_text_unfinished_text_hold .br .di .paste_footer \} .. \######################################################################### .de paste_footer .ev footer_environment .tl ''- \\n[.pn] -'' .bp .footnote_text_unfinished_text_hold .rm footnote_text_unfinished_text_hold .ev .. \######################################################################### .de header .ie '\\$1'no' \{\ .ds show_header no \} .el \{\ .ds header_left \\$1 .ds header_center \\$2 .ds header_right \\$3 \} .. \######################################################################### .de footer .ie '\\$1'no' \{\ .ds show_footer no \} .el \{\ .ds footer_left \\$1 .ds footer_center \\$2 .ds footer_right \\$3 \} .. \######################################################################### .de draw_full_page_horisontal_line \D't \\n[header_horizontal_line_thickness]' \l'\\n[.ll]u' .. .de paste_header .if !(\\n[.pn]=1) \{\ .ie '\\*[show_header]'yes' \{\ .ev header_env .br .sp \n[header_text_from_top_spacing] .tl '\\*[header_left]'\\*[header_center]'\\*[header_right]' .sp -1v .sp \n[header_line_from_text_spacing] .draw_full_page_horisontal_line .br .sp \n[header_real_text_from_line_spacing] .ev \} .el \{\ .sp \n[header_text_from_top_spacing] .sp \n[header_real_text_from_line_spacing] \} \} .. \######################################################################### .de problem .br \f[B]\\*[problem_string] \\n[current_problem_number]: \f[] .nr current_problem_number +1 .br .. \######################################################################### .de solution .br \f[B]\\*[solution_string]:\f[] .br .. \######################################################################### .de mark_problem .if !'\\$1'' \{\ .nr \\$1 \\n[current_problem_number]-1 \} .. \######################################################################### .de theorem .br .ie !'\\$1'' \{\ \f[B] \\*[theorem_string] \\$1: \f[] .ds current_theorem_string \\$1 \} .el \{\ \f[B] \\*[theorem_string] \\n[current_theorem_number]: \f[] .nr current_theorem_number +1 .rm current_theorem_string \} .br .. \######################################################################### .de mark_theorem .if !'\\$1'' \{\ .ie d current_theorem_string \{\ .ds \\$1 \\*[current_theorem_string] \} .el \{\ .nr \\$1 \\n[current_theorem_number]-1 \} \} .. \######################################################################### .de proof .br \f[B]\\*[proof_string]: \f[] .br .. \######################################################################### .de verbatim .ie '\\$1'end' .fi .el .nf .. \######################################################################### .de right .br .ie '\\$1'end' .in -\\n[indentation_is_by_how_much] .el .in +\\n[indentation_is_by_how_much] .. \######################################################################### .de left .br .ie '\\$1'end' .in +\\n[indentation_is_by_how_much] .el .in -\\n[indentation_is_by_how_much] .. \######################################################################### .de center .br .ie '\\$1'end' .ad l .el .ad c .. \######################################################################### .de code .ie '\\$1'end' \{\ \f[] .verbatim end \} .el \{\ .verbatim \f[B] \} .. \######################################################################### .de superscript \s-\\n[superscript_size_decrease]\v'-0.3v'\h'-0.3v'\\$1\v'+0.3v'\s+\\n[superscript_size_decrease] .. \######################################################################### .de references .if d references_accumulation \{ .plainpage .br .sp \n[space_from_top_to_bibliography_string] .center \\*[bibliography_string] .center end .br .sp \n[space_from_bibliography_string_to_references] .references_accumulation .br \} .. .em references \######################################################################### .de ][ .boxa references_accumulation .br [\\*[[F]] .if d[A \{\ \f[B]\\*[[A]\f[]. .rm [A \} .if d[D \{\ (\\*[[D]). .rm [D \} .if d[T \{\ \\*[[T]. .rm [T \} .if d[P \{\ \f[B]page \\*[[P]\f[]. .rm [P \} .if d[I \{\ \f[I]\\*[[I]. \f[] .rm [I \} .if d[O \{\ \\*[[O]. .rm [O \} .br .sp .box .. \######################################################################### .de titlepage .ie '\\$1'end' \{ .place_header_trap .newpage .place_footer_trap .pn 1 \} .el \{ .remove_decoration \} .. \######################################################################### .de plainpage .br .ie '\\$1'end' \{ .place_header_trap .place_footer_trap \} .el \{ .remove_header_trap .newpage .remove_footer_trap \} .. \######################################################################### .de breakpage .di breakpage_diversion .br .di .bp .breakpage_diversion .. \######################################################################### .de newpage .bp .. \######################################################################### .de newline .br .. \######################################################################### .ig .als параграф paragraph .als заглавие title .als автор author .als списък list .als елемент item .als новред newline .als новастраница newpage .als забележка footnote .als надпис heading .als щурц header .als основа footer ..