.pn 0 \######################################################################### .nr paragraph_indentation 2.3 .nr heading_current_number 1 .nr footnote_current_number 0 .nr footnote_vertical_spacing 5 \# font size .nr footnote_point_size_reduction 3 \# default heading style .ds heading_style DIGIT \######################################################################### .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.3 .nr header_real_text_from_line_spacing 0.3 .nr header_horizontal_line 1 .nr header_horizontal_line_thickness 0.5p \######################################################################### .nr indentation_is_by_how_much 0.5i \######################################################################### \######################################################################### \######################################################################### \######################################################################### \######################################################################### \######################################################################### \######################################################################### \######################################################################### .de place_footer_trap .wh -3v footer_trap_macro .. \######################################################################### .de place_header_trap .wh 0 paste_header .. \######################################################################### .de place_ordinary_traps .place_header_trap .place_footer_trap .. \######################################################################### .ev footnote_environment .vs \n[footnote_vertical_spacing] .ev \######################################################################### \# IMPORTANT! .place_ordinary_traps \######################################################################### .de remove_footer_trap .wh -3v .. \######################################################################### .de remove_header_trap .wh 0 .. \######################################################################### .de paragraph .ti \\n[paragraph_indentation] .. \######################################################################### .de list .ie '\\$1'end' \{\ .nr list_indentation 0 \} .el \{\ .nr list_indentation 1 \} .. \######################################################################### .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] \\n[heading_current_number]. \\$1 \f[] .nr heading_current_number +1 \} .br .. \######################################################################### .de mark_heading .if !'\\$1'' \{\ .if heading_current_number>0 \{\ .nr \\$1 \\n[heading_current_number]-1 \} \} .. \######################################################################### .de title \v'5v' .ce 9999 .ps +2 .ps -2 \f[B] \\$1 \f[] .sp 1 .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' \{\ .ps +\\n[footnote_point_size_reduction] .br .boxa .if !d there_is_a_footnote \{\ .wh -1i paste_footnote .ds there_is_a_footnote "yes" \} \} .el \{\ .nr footnote_current_number +1 [\\n[footnote_current_number]] .boxa footnote_text .br .ps -\\n[footnote_point_size_reduction] . [\\n[footnote_current_number]] \} .. \######################################################################### .de paste_footnote \# divert possible unfinished line .di footnote_text_unfinished_text_hold .br .di .if d footnote_text \{\ \# separator .ev footnote_environment \l'1i' .ds footnote_start_flag "yes" .footnote_text .br .rm footnote_text .rm footnote_start_flag .ie d footer_start_flag \{\ .br .di .di footnote_text .footnote_text_hold .rm footnote_text_hold .rm footer_start_flag .ev .di \} .el \{\ .rm footnote_text .ev .bp \} \} .. \######################################################################### .de footer_trap_macro .ie d footnote_start_flag \{\ .ds footer_start_flag "yes" .di footnote_text_hold .br .di .ev .paste_footer .ev footnote_environment .di footnote_text_hold .br \} .el \{\ .paste_footer \} .. \######################################################################### .de paste_footer .ce 1 - \\n[.pn] - .ce 0 .bp .footnote_text_unfinished_text_hold .rm footnote_text_unfinished_text_hold .. \######################################################################### .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) \{\ .if '\\*[show_header]'yes' \{\ .sp \\n[header_text_from_top_spacing] .ad l \\*[header_left] .br .sp -1 .ad c \\*[header_center] .br .sp -1 .ad r \\*[header_right] .br .sp -1 .ad l .sp \\n[header_line_from_text_spacing] .draw_full_page_horisontal_line .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 .if '\\$1'end' .in -\\n[indentation_is_by_how_much] .el .in \\n[indentation_is_by_how_much] .. \######################################################################### .als newpage bp .als 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 ..