diff options
Diffstat (limited to 'scripts/LinuxManBook/utp.mac')
-rw-r--r-- | scripts/LinuxManBook/utp.mac | 742 |
1 files changed, 0 insertions, 742 deletions
diff --git a/scripts/LinuxManBook/utp.mac b/scripts/LinuxManBook/utp.mac deleted file mode 100644 index ed9027a..0000000 --- a/scripts/LinuxManBook/utp.mac +++ /dev/null @@ -1,742 +0,0 @@ -.ig -vim:syntax=off - -Macros for typesetting _Unix Text Processing_. -Based on the macros from Chapter 17 and Appendix F -of that book. - -Adapted by Jon Snader as part of a project to make this classic -book available again. - -Version of 16 November 2002 -.. -.RT -.nr nH 0 \" don't number [ABCD]-heads -.nr gE 0 \" don't add chapter number to [ABCD]-heads -.nr chapter_page 0 \" avoid diag. if there's no .Se call -.ds chapter_name -\# -\# Redefine LP so that it can take an argument to suppress spacing -\# -.de par*start*nospace -.ds@auto-end -.nr \\n[.ev]:pli \\$1 -.nr \\n[.ev]:pri \\$2 -.par@reset -.ne 1v+\\n(.Vu -.. -.de LP \"Non indented paragraph. Don't skip space if \\$1 == 0 -.ie '\\$1'0' .par*start*nospace 0 0 -.el .par*start 0 0 -.nr \\n[.ev]:ai \\n[\\n[.ev]:PI] -.. -\# -\# Nh - set behavior of numbered headings -\# $1: -\# 0 - no numbering -\# 1 - number all headings -\# 2 - number A-head only -\# -\# $2 (if present): -\# 0 - don't add section numbers to headers -\# 1 - prefix headers with section number -\# -.de Nh -. nr nH \\$1 -. if !'\\$2'' .nr gE \\$2 -.. -\# -\# Square centered vertically -\# -.ds square \v'-.25v'\s6\(sq\s0\v'.25v' -\# -\# Special A-head for UTP -\# -.de utp_Ah -.sp 26p -.RT -.pdfbookmark 2 \\$1 -.ne 6 -.ps 14 -.vs 16 -.lg 0 -.ce -\fB\*[square] \\$1 \*[square]\fP -.LP 0 -.lg -.sp 18p -.ns -.if \\n[Ref] .tm Ah: \\*[PDFBOOKMARK.NAME] \\n(PN \\$1 -.. -\# -\# The [ABCD]-head macros -\# -.de standard_Ah \" A-head. $1: title -.sp 26p -.RT -.ne 6 -.ps 14 -.vs 16 -.lg 0 -.tr aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ -\fB\c -.if \\n[nH] \{. \"if producing numbered headings -. ie \\n[gE] .sec# 2 \" if Se (chapter) macro is -. \" numbered, then this is on the second level -. el .sec# 1 \" otherwise it's on the first level -.\} -\&\\$1\fP -.LP 0 \" reset paragraph, but not font size, etc. -.tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz -.lg -.sp 18p -.ns -.. -.als Ah standard_Ah -\# -.de Bh \" B-head. $1: title -.sp 23p -.pdfbookmark 3 \\$1 -.RT -.ne 6 -.ps 14 -.vs 16 -.lg 0 -\fB\c -.if '\\n[nH]'1' \{. \"if producing numbered headings -. ie \\n[gE] .sec# 3 \" if Se (chapter) macro is -. \" numbered, then this is on the third level -. el .sec# 2 \" otherwise it's on the second level -.\} -\&\\$1\fP -.LP 0 \" reset paragraph, but not font size, etc. -.lg -.sp 15.5p -.ns -.. -\# -.de Ch \" C-head. $1: title -.sp 18p -.RT -.ne 6 -.ps 12 -.vs 14 -.lg 0 -\fB\c -.if '\\n[nH]'1' \{. \"if producing numbered headings -. ie \\n[gE] .sec# 4 \" if Se (chapter) macro is -. \" numbered, then this is on the fourth level -. el .sec# 3 \" otherwise it's on the third level -.\} -\&\\$1\fP -.LP 0 \" reset paragraph, but not font size, etc. -.lg -.sp 12p -.ns -.. -\# -.de Dh \" D-head. $1: title -.sp 18p -.RT -.ne 6 -.ps 10 -.vs 12 -.lg 0 -\fB\c -.if '\\n[nH]'1' \{. \"if producing numbered headings -. ie \\n[gE] .sec# 5 \" if Se (chapter) macro is -. \" numbered, then this is on the fifth level -. el .sec# 4 \" otherwise it's on the fourth level -.\} -\&\\$1.\fP -.lg -.. -\# -\# The Section macro -\# -\# This is for Chapters and Appendices -\# -.de Se \" Section. $1: number, $2: name -. \" $3: type (Chapter, Appendix, ...) -. \" $4: non-null => don't map to uppercase -.if e \{\ -\& -.bp -.\} -.ds chapter_name \\$2 -.ie !'\\$1'' \{. \" If we have a section number -. utpbookmark -T "\\$3\\$1" 1 "\\$1. \\$2" -. ds chapter_head \\$1 -. nr is_alpha 0 -. if '\\$1'A' .set_section 1 -. if '\\$1'B' .set_section 2 -. if '\\$1'C' .set_section 3 -. if '\\$1'D' .set_section 4 -. if '\\$1'E' .set_section 5 -. if '\\$1'F' .set_section 6 -. if '\\$1'G' .set_section 7 -. if '\\$1'H' .set_section 8 -. if '\\$1'I' .set_section 9 -. if '\\$1'J' .set_section 10 -. if '\\$1'K' .set_section 11 -. if '\\$1'L' .set_section 12 -. if '\\$1'M' .set_section 13 -. if '\\$1'N' .set_section 14 -. if '\\$1'O' .set_section 15 -. if '\\$1'P' .set_section 16 -. if '\\$1'Q' .set_section 17 -. if '\\$1'R' .set_section 18 -. if '\\$1'S' .set_section 19 -. if '\\$1'T' .set_section 20 -. if '\\$1'U' .set_section 21 -. if '\\$1'V' .set_section 22 -. if '\\$1'W' .set_section 23 -. if '\\$1'X' .set_section 24 -. if '\\$1'Y' .set_section 25 -. if '\\$1'Z' .set_section 26 -. if !\\n[is_alpha] \{\ -. nr section \\$1 -. nr intH1 \\$1 -. \} -.\} -.el \{. \" Illegal Chapter Appendix number -. nr section 0 -. utpbookmark -T \\$2 1 \\$2 -. \" Might be Preface, etc. so no error diag. -.\} -.nr chapter_page2 1 \" Next page starts a chapter, so no header -.if \\n[%]>1 .bp -.nr PN \\n[%] -.ie '\\$3'NONE' .af PN i -.el .af PN 1 -.nr chapter_page 1 \" This page starts a chapter, number at bottom -.if !\\n[gE] .nr intH1 0 -.nr intH2 0 \" rescind lower level numbering -.nr intH3 0 -.nr intH4 0 -.nr intH5 0 -.nr fig_num 0 \" Reset figure number -.nr table_num 0 \" Reset table number -.format_section "\\$1" "\\$2" \\$3 \\$4 -.ie '\\$1'' \{\ -.ie '\\$2'' .if \\n[Ref] .tm Se: \\*[PDFBOOKMARK.NAME] \\n(PN \\$3 -.el .if \\n[Ref] .tm Se: \\*[PDFBOOKMARK.NAME] \\n(PN \\$1 \\$2 -.\} -.el .if \\n[Ref] .tm Se: \\*[PDFBOOKMARK.NAME] \\n(PN \\$1 \\$2 -.. -\# -\# Set section number for alphabet chapters (appendices) -\# -.de set_section -.nr intH1 \\$1 -.af intH1 A -.nr section \\$1 -.nr is_alpha 1 -.. -\# -\# Draw a horizontal line -\# -.de horizontal_line -.br -\l'\\n[.l]u-\\n[.i]u\&\\$1' -.br -.. -.als Hl horizontal_line -\# -\# Standard Section Formatting Routine -\# -.de format_standard_section -.RT -.in 0 -.lg 0 -.if '\\$4'' .tr aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ -.sp -.na -.\" Set section type--default is Chapter -.ie !'\\$3'' \{\ -. ie '\\$3'NONE' .ds chapter_type -. el .ds chapter_type \\$3 -.\} -.el .ds chapter_type Chapter -.\" If there is a section number, output Type and section number -.if !'\\$1'' \s14\fB\\*[chapter_type] \\$1\fP\s0 -.\" If there is no section number, but there is a type, then output it -.if '\\$1'' .if !'\\$3'' \s14\fB\\*[chapter_type]\fP\s0 -.sp 5p -.\" Print the section title if there is one -\#.if !'\\$2'' \s14\fB\\$2\fP\s0 -.if !'\\$2'' \{\ -.ps 14 -.B -\&\\$2 -.R -.ps \\n[PS] \" Reset to PS in case of inline \s -.\} -.sp 6p -.ad b \" Adjust both margins -.horizontal_line \" Draw horizontal line -.if '\\$4'' .tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz -.sp 3 -.ns -.. -.als format_section format_standard_section -\# -\# numbered header Macros -\# Special version of NH to generate just the string -\# Used internally. -\# -.de sec# -.nr NS \\$1 \" Current level -.if !\\n[.$] .nr NS 1 \" Default is level 1 -.if !\\n[NS] .nr NS 1 \" In case it's NULL or negative -.nr intH\\n[NS] +1 \" Increment count on current level -.\" Rescind lower levels -.if !\\n[NS]-4 .nr intH5 0 -.if !\\n[NS]-3 .nr intH4 0 -.if !\\n[NS]-2 .nr intH3 0 -.if !\\n[NS]-1 .nr intH2 0 -.\" Build up the string -.if !\\$1 .if \\n[.$] .nr intH1 1 -.ds SN \\n[intH1] -.ie \\n[NS]-1 .as SN .\\n[intH2] -.el .as SN . \" either x.y or x. -.if \\n[NS]-2 .as SN .\\n[intH3] -.if \\n[NS]-3 .as SN .\\n[intH4] -.if \\n[NS]-4 .as SN .\\n[intH5] -'ti \\n[.i]u -\\*[SN] \" print answer -.. -\# -\# Figure start and end macros -\# -.de Fs \" start figure $1: reserved space $2: float figure -.RT -.ie 'F'\\$2' \{. \" if figure can float -. nr floating_keep 1 -. KF -.\} -.el .nr floating_keep 0 -.if !'\\$1'' \{. \" if space specified -. ne \\$1 -. fl -. rs -. sp \\$1 -.\} -.. -.de Fe \" end figure $1: title -.sp -.nr fig_num +1 \" increment figure counter -.ie \\n[section] .ds figure \\*[chapter_head].\\n[fig_num] -.el .ds figure \\n[fig_num] -.ce -\f[BI]Figure \\*[figure] \\$1\fP -.sp -.if \\n[floating_keep] .KE -.. -\# -\# Table start and end macros -\# -.de Ts \" table start $1: title -.nr table_num +1 \" increment table number -.ie \\n[section] .ds table \\*[chapter_head].\\n[table_num] -.el .ds table \\n[table_num] -.sp -.ce -\f[BI]Table \\*[table] \\$1\fP -.LP -.. -.de Te -.RT -.sp -.. -\# -\# Numbered lists -\# -.nr l0 0 1 -.de Ls -.\" list start $1: A - ALPHA -.\" a - alpha -.\" B - bullet -.\" N - numeric -.\" R - ROMAN NUMERALS -.\" r - roman numerals -.\" $2: indent -.\" $3: alternate bullet character -.br -.if !'\\$1'A' .if !'\\$1'a' .if !'\\$1'B' .if !'\\$1'N' \ -. if !'\\$1'R' .if !'\\$1'r' .if !'\\$1'' \ -. tm Ls: Need A, a, B, N, R, or r as type -.nr l\\n+[l0] 0 1 -.ie '\\$1'' \{. \" set defaults -. if '\\n[l0]'1' .af l\\n[l0] 1 \"numeric at 1st level -. if '\\n[l0]'2' .af l\\n[l0] a \"alpha at 2nd level -. if '\\n[l0]'3' .af l\\n[l0] i \"roman at 3rd level -. if '\\n[l0]'4' .ds l\\n[l0] \(bu \"bullet at 4th level -. if '\\n[l0]'5' .ds l\\n[l0] \- \"dash at 5th level -. if \\n[l0]-5 .ds l\\n[l0] \(bu \"bullet above 5th level -. if \\n[l0]-3 .nr l\\n[l0] 0-1 \"mark bullet and dash as non-incrementing -.\} -.el \{\ -. if '\\$1'A' .af l\\n[l0] A -. if '\\$1'a' .af l\\n[l0] a -. if '\\$1'B' \{\ -. ie '\\$3'' .ds l\\n[l0] \(bu -. el .ds l\\n[l0] \\$3 -. nr l\\n[l0] 0-1 \"mark as non-incrementing -. \} -. if '\\$1'R' .af l\\n[l0] I -. if '\\$1'r' .af l\\n[l0] i -.\} -.ie !'\\$2'' .nr i\\n[l0] \\$2 \"set list indent -.el .nr i\\n[l0] 5 \"default indent -.RS -.. -.de Li \" List start $1 == 0: no blank line preceding -.br -.if '\\$1'0' .ns -.ie '\\n[l\\n[l0]]'-1' .intIP "\\*[l\\n[l0]]" "\\n[i\\n[l0]]" -.el \{\ -. nr l\\n[l0] +1 -. intIP "\\n[l\\n[l0]]." "\\n[i\\n[l0]]" -.\} -.. -.de Le \" List end $1 == 0: no blank line after -.br -.rr l\\n[l0] \" remove number registers -.rr i\\n[l0] -.rm l\\n[l0] \" and string register, if any -.nr l0 -1 \" back one level of nesting -.RE -.ie !\\n[l0] \{\ -. ie '\\$1'0' .LP 0 -. el .LP -.\} -.el .if !'\\$1'0' .sp \\n[PD]u -.. -\# -\# intIP - internal version of IP that centers tag -\# -.de intIP -.sp \\n[PD]u -.in \\n[\\n[.ev]:il]u*\\n[PI]u-\\n[PI]u+\\$2n -.nr indent1 \\$2n/2u+\w'\\$1' \" amount to move left -\#.nr indent2 \\$2n+\w'\\$1' \" amount to move back -\#.ta \\n[indent2]u -.ta \\n[indent1]u -.ti -\\n[indent1]u -\\$1\t\c -.. -\# -\# Printout and listing macros -\# -.ev printout \" set up the listing environment -.ns -.ps 9 -.vs 10 -.ft C -.nf -.ev -.de Ps \" printout start $1: indent -.br -.ev printout -.sp \\n[PD]u -.ie !'\\$1'' .in +\\$1n -.el .in +5n -.. -.de Pe \" printout end $1: non-null => no following space -.br -.if '\\$1'' .sp \\n[PD]u -.in -.ev -.. -\# -\# X[1-4]: Side by side virtual display screens -\# Contributed by Heinz-Jürgen Oertel -\# -.\" Macro definition -.\" window width -.\" Should be calculated, so that the width is 25 equal spaced chars -.nr my_wid \w'\f(CW12345678901234567890123456\fP' -.de X1 -.sp -.mk x_box -.nf -.\" left and right page offset -.po +(u;\\n[.ll]/40) -.ll \n[my_wid]u -.in +1n -.CW -.. -.de X2 -.mk here -.in -1n -.draw_screen \n[my_wid]u \\n[here]u-\\n[x_box]u+\\n[.v]u -.po +(u;\n[my_wid]) -.\" line length of the centered text -.ll (u;(\\n[LL]u)-(2*\n[my_wid]u)-(\\n[LL]/20u)) -.sp |\\n[x_box]u -.ce 10 -.R -.. -.de X3 -.ce 0 -.sp |\\n[x_box]u -.po +(u;(\\n[LL]u)-(2*\n[my_wid]u)-(\\n[LL]/20u)) -.ll \n[my_wid]u -.nf -.in +1n -.CW -.. -.de X4 -.in -1n -.draw_screen \n[my_wid]u \\n[here]u-\\n[x_box]u+\\n[.v]u -.R -.fi -.po \\n(POu -.ll \\n(LLu -.. -\# -\# Helvetica font change macros -\# -.de H \" Helvetica -.ie !\\n[.$] .ft H -.el \&\\$3\fH\\$1\fP\\$2 -.. -.de HB \" Helvetica Bold -.ie !\\n[.$] .ft HB -.el \&\\$3\f[HB]\\$1\fP\\$2 -.. -.de HI \" Helvetica Italic -.ie !\\n[.$] .ft HI -.el \&\\$3\f[HI]\\$1\fP\\$2 -.. -\# -\# Screen Boxes -\# -.de draw_screen \" Draw box with rounded corners, $1: wid $2: ht -.nr radius (((\\$1)<?(\\$2))/4u)<?.25i -\v'-\\n[radius]u'\D'a \\n[radius]u 0 0 \\n[radius]u'\c -\D'l (\\$1)-(2u*\\n[radius]u) 0'\c -\D'a 0 -\\n[radius]u \\n[radius]u 0'\D'l 0 -(\\$2)+(2u*\\n[radius]u)'\c -\D'a -\\n[radius]u 0 0 -\\n[radius]u'\D'l -(\\$1)+(2u*\\n[radius]u) 0'\c -\D'a 0 \\n[radius]u -\\n[radius]u 0'\D'l 0 (\\$2)-(2u*\\n[radius]u)' -.. -.de SS -.nr li_save \\n[\\n[.ev]:li] -.nr ri_save \\n[\\n[.ev]:ri] -.nr \\n[.ev]:li +3n -.nr \\n[.ev]:ri +3n -.br -.sp \\n[SS_prefix]u -.ie \\n[.$] \{\ -. nr width \\$1 -. nr height \\$2 -. mk screen_start -.\} -.el .nr width 0 -.di screen_div -.sp .5v -.in +3n \" Leave extra room for the rounded corners -.ll -3n -.lt -3n -\& -.. -.de SE -.br -.di -.ne \\n[dn]u -.ev nf -.screen_div -.ev -.in -3n -.ll +3n -.lt +3n -.nr \\n[.ev]:li \\n[li_save] -.nr \\n[.ev]:ri \\n[ri_save] -.ie !\\n[width] \{\ -. mk screen_end -\#. draw_screen \\n[dl]u+3n \\n[dn]u+\\n[.v]u -. draw_screen \\n[.l]u \\n[dn]u+\\n[.v]u -.\} -.el \{\ -. sp |\\n[screen_start]u+\\n[height]u-\\n[.v]u -. mk screen_end -. draw_screen \\n[width]u \\n[height]u -.\} -.sp |\\n[screen_end]u+1 -.. -\# -\# Notes macros -\# -.nr note_counter 0 -.nr rnotes 0 -.ev notes -.par*env-init -.ll \n[LL]u -.lt \n[LL]u -.ps \n[PS] -.vs \n[VS] -.ev -.de Rn \" Reviewer note, $1: note -.sp -\fBNote to reviewers:\fP \\$1 -.sp -.ev notes -.da rev_notes -.sp 0.2v -.in 0 -.ie \\n[do-page] \(sq Page \\n[PN] (\\*[page-utp]): \\$1 -.el \(sq Page \\n(PN: \\$1 -.br -.da -.nr rnotes 1 -.ev -.. -.de Pn \" Personal note, $1: note -.ev notes -.if \\n[note_counter]<1 .nr note_counter 0 1 -.da pers_notes -.br -.IP \\n+[note_counter]. 5n -\\$1 -.ie \\n[do-page] \ (Page \\n[PN]/\\*[page-utp]) -.el \ (Page \\n(PN) -.br -.da -.ev -.. -\# -\# End Macro -\# -\# Output diverted material -\# -.de EM -.br -.if \\n[rnotes]=1 \{\ -\&\c -' bp -. ce -\fBNotes to Reviewers\fP -. sp 2 -. ev notes -. nf -. rev_notes -. ev -.\} -.if \\n[note_counter]>0 \{\ -. br -\&\c -' bp -. ce -\fBPersonal Notes\fP -. sp 2 -. ev notes -. nf -. pers_notes -. ev -.\} -.. -\# -\# UTP top and bottom page processing -\# -.de utp_top -.ev header_footer -.nr PN \\n[%] -.if !\\n[chapter_page2] \{. \" if this page doesn't start a chapter -. ie o .tl ''\\*[chapter_name]'\\n[PN]' -. el .tl '\\n[PN]'\*[square] Unix Text Processing \*[square]'' -.\} -.ev -.. -.de utp_bottom -.ev header_footer -.if \\n[chapter_page] \{\ -. tl ''\\n[PN]'' -. nr chapter_page 0 -. nr chapter_page2 0 -.\} -.ev -.. -\#.de page -\#.mk page-vpos -\#.nr page-hpos \\n[.k] -\#.po \\n[PO]u-4n -\#.br -\#\\$1 -\#.br -\#.po \\n[PO]u -\#.sp |\\n[page-vpos]u -\#\h'|\\n[page-hpos]u' -\#.. -.de do-page \" Enable the .page macro -.nr do-page 1 -.. -.de page \" Capture the original UTP page numbers -.ds page-utp \\$1 -.if \\n[do-page] \{\ -. mk page-pos -. ev page-env -' di page-num -' nf -\\$1 -. ev -. di -. mk page-trap -. nr page-trap +.1v -. wh \\n[page-trap]u page-put -.\} -.. -.de page-put \" Place the UTP page number in the left margin -.mk page-end -.wh \\n[page-trap]u -'sp |\\n[page-pos]u -.ev page-env -'po \\n[PO]u-5n -'fi -.page-num -.br -.ev -'po \\n[PO]u -'sp |\\n[page-end]u -.. -.de ix -.ie '\\n(.z'' \{\ -. if !'\\$1'%end' \{\ -. ds ixbk ix:bm\\n+[ixno] -. pdfhref M -N \\*[ixbk] -. \} -. if \\n[Ref] .tm ix: \\$* \\n% \\*[ixbk] -.\} -.el \\!.ix \\$* -.. -\# -\# Set defaults for UTP -\# -.de utp -.ps 10 -.vs 12 -.nr PS 10 -.nr VS 12 -.nr SS_prefix 1v -.nr do-page 0 -.Nh 0 0 -.als Ah utp_Ah -.als chapter Se -.als PT utp_top -.als BT utp_bottom -.ev header_footer -.ll \\n[LL]u -.lt \\n[LL]u -.ps \\n[PS] -.vs \\n[VS] -.ev -.. -.de utpbookmark -.ie '\\*[.T]'ps' \{\ -. pdfhref M -N \\$2 -- \\$4 -. if !dpdf:href.map .tm gropdf-info:href \\$2 \\$4 -. pdfbookmark \\$3 \\$4 -.\} -.el .pdfbookmark \\$* -.. -.em EM |