.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
..