Posle- duyushchie ssylki na eto imya ne budut vyzyvat' nika- kih dejstvij; rn - pereimenovat' komandu, makro ili cepochku. Forma vyzova komandy rn - .rn xx yy, nachal'noe znache- nie - net, net argumentov - ignoriruetsya, prime- chanie - net. Pereimenovyvaet komandu, makro ili cepochku xx v yy. Esli yy uzhe sushchestvuet, predy- dushchaya versiya yy udalyaetsya; di - otvesti vyhodnoj tekst. Forma vyzova komandy di - .di xx, nachal'noe znachenie - net, net argumen- tov - konec, primechanie - D. Otvodit vyhodnoj tekst v makro xx. V processe otvedeniya proisho- dit normal'naya obrabotka teksta za isklyucheniem togo, chto ne schitayutsya stranicy. Obrabotka teksta v makro zakanchivaetsya, kogda vstrechayutsya komandy di ili da bez argumenta. CHuzhdye komandy etogo tipa ne dolzhny poyavlyat'sya, pri ispol'zova- nii vlozhennyh otvedenij; da - dobavit' vyhodnoj tekst k otvedennomu. Forma vy- zova komandy da - .da xx, nachal'noe znachenie - net, net argumentov - konec, primechanie - D. Otvodit tekst, dobavlyaya ego v makro xx (versiya komandy di dlya dobavleniya teksta); wh - ustanovit' lovushku po pozicii na stranice. Forma vyzova komandy wh - .wh N xx, nachal'noe znachenie 37 APK.00322-01 33 01-15 - net, net argumentov - net, primechanie - V. Ustanovit' lovushku dlya vyzova makro xx na pozi- ciyu stranicy N, otricatel'noe znachenie N budet interpretirovat'sya kak rasstoyanie ot osnovaniya (niza) stranicy. Esli na poziciyu N ranee byla ustanovlena lovushka s drugim makro, to teper' s poziciej N budet svyazano makro xx. Nulevoe zna- chenie N otnositsya k verhnemu krayu stranicy. V sluchae otsutstviya xx lovushka, najdennaya v pozi- cii N, udalyaetsya; ch - izmenit' poziciyu lovushki. Forma vyzova komandy ch - .ch xx N. nachal'noe znachenie - net, net ar- gumentov -net, primechanie - v. Izmenyaet poziciyu lovushki dlya makro xx na N. V sluchae otsutstviya N lovushka, esli ona byla ustanovlena, udalyaetsya; dt - ustanovit' lovushku po pozicii v otvedenii. Forma vyzova komandy dt - .dt N xx, nachal'noe znachenie - net, net argumentov - vyklyuchit', primechanie - D,v. Ustanavlivaet lovushku v poziciyu N tekushchego otvedeniya dlya vyzova makro xx. Eshche odna komanda .dt pereopredelit lovushku otvedeniya. Esli argu- menty ne zadany, lovushka udalyaetsya; it - ustanovit' lovushku po kolichestvu vvedennyh strok. Forma vyzova komandy it - .it N xx, na- chal'noe znachenie - net, net argumentov - vyklyu- chit', primechanie - E. Ustanavlivaet lovushku dlya 38 APK.00322-01 33 01-15 vyzova makro xx posle chteniya N strok ishodnogo teksta (upravlyayushchie stroki i stroki komand ne uchityvayutsya). Uchityvaetsya tekst, schitannyj iz ishodnogo fajla ili tekst, vstavlyaemyj makroko- mandami, soderzhashchimisya v stroke ishodnogo fajla ili vyzvannymi pri obnaruzhenii "lovushek"; em - konechnoe makroopredelenie. Forma vyzova komandy em - .em xx, nachal'noe znachenie - net, net argu- mentov - net, primechanie - net. Makro xx budet vyzvana posle okonchaniya vsego vvoda. Rezul'tat budet takim zhe, kak esli by soderzhimoe xx naho- dilos' v konce poslednego obrabatyvaemogo fajla. 39 APK.00322-01 33 01-15 8. CHISLOVYE REGISTRY Pol'zovatelyu dostupny mnozhestvo razlichnyh, opredelen- nyh sistemoj (sistemnyh) imenovannyh chislovyh registrov. Krome togo pol'zovatel' mozhet opredelit' sobstvennye chis- lovye registry. Imena registrov soderzhat odin ili dva sim- vola i mogut sovpadat' s imenami komand, makro ili cepo- chek. Imena registrov takzhe ne mogut soderzhat' russkih bukv. Za isklyucheniem nekotoryh sistemnyh registrov, pred- naznachennyh tol'ko dlya chteniya, chislovye registry dopuskayut chtenie, zapis', avtomaticheskoe uvelichenie ili umen'shenie soderzhimogo i vstavku ih soderzhimogo v vvodimyj tekst v razlichnyh formatah. Obychno pol'zovateli ispol'zuyut eti re- gistry dlya avtomaticheskoj numeracii razdelov, paragrafov, strok i t.d. CHislovye registry mozhno ispol'zovat' vsegda, kogda trebuetsya cifrovoj vvod, a takzhe v chislovyh vyrazhe- niyah. CHislovye registry sozdayutsya i izmenyayutsya s pomoshch'yu komandy nr, kotoraya zadaet imya, chislennoe znachenie i veli- chinu avtomaticheskogo prirashcheniya. Registry takzhe izmenyayut- sya, esli oni ispol'zuyutsya v posledovatel'nosti operacij, soderzhashchih avtoprirashcheniya. Esli registry x i xx soderzhat N i shag avtomaticheskogo prirashcheniya raven M, to ih ispol'zo- vanie v sleduyushchih posledovatel'nostyah privodit k rezul'ta- tam, predstavlennym v tabl.3: 40 APK.00322-01 33 01-15 Tablica 3 ----------------------------------------------- |posledova-| sostoyanie |vstavlyaemoe| |tel'nost' | registra |znachenie | |----------|----------------------|-----------| | \nx | ne menyaetsya | N | | \n(xx | ne menyaetsya | N | | \n+h | h uvelichivaetsya na M | N+M | | \n-h | h umen'shaetsya na M | N-M | | \n+(xx | xx uvelichivaetsya na M| N+M | | \n-(xx | xx umen'shaetsya na M | N-M | ----------------------------------------------- Kogda chislovoj registr vstavlyaetsya v tekst, ego so- derzhimoe preobrazuetsya v desyatichnuyu formu (po umolchaniyu), v desyatichnuyu formu s vedushchimi nulyami, v malen'kie rimskie cifry, bol'shie rimskie cifry, v posledovatel'nost' malen'- kih bukv alfavita ili posledovatel'nost' zaglavnyh bukv alfavita v zavisimosti ot formata, zadannogo v komande af. Dlya sozdaniya i izmeneniya registrov ispol'zuyutsya sle- duyushchie komandy: nr - opredelit' i ustanovit' chislovoj registr. Forma vyzova komandy nr - .nr R _N M, nachal'noe znache- nie - net, net argumentov - net, primechanie - U. CHislovomu registru R prisvaivaetsya znachenie _N po otnosheniyu k predydushchemu znacheniyu, esli ono 41 APK.00322-01 33 01-15 bylo. SHag avtomaticheskogo prirashcheniya ustanavli- vaetsya ravnym M; af - opredelit' format chislovogo registra. Forma vy- zova komandy af - .af R c, nachal'noe znachenie - arabskie, net argumentov - net, primechanie - net. Zadaet format c dlya soderzhimogo registra R. Mogut byt' ispol'zovany formaty, privedennye na ris.1. Formaty dlya registra r ------------------------------------------- | format | posledovatel'nost' numeracii | |--------|--------------------------------| | 1 | 0,1,2,3,4,5,........ | | 001 | 000,001,002,003,004,005,...... | | i | 0,i,ii,iii,iv,v,....... | | I | 0,I,II,III,IV,V,....... | | a | 0,a,b,c,..,z,aa,ab,..zz,aaa,.. | | A | 0,A,B,C,..,Z,AA,AB,..ZZ,AAA,.. | ------------------------------------------- ris.1 ; rr - udalit' chislovoj registr. Forma vyzova komandy rr - .rr R, nachal'noe znachenie - net, net argu- mentov - ignoriruetsya, primechanie - net. Esli dinamicheski sozdaetsya bol'shoe kolichestvo re- gistrov, mozhet vozniknut' neobhodimost' udalit' neispol'zuemye bol'she registry dlya togo, chtoby 42 APK.00322-01 33 01-15 osvobodit' oblast' vnutrennej pamyati dlya vnov' sozdavaemyh registrov. 43 APK.00322-01 33 01-15 9. TABULYACII, LIDERY I POLYA 9.1. Tabulyacii i lidery ASCII-simvoly gorizontal'noj tabulyacii (HT) i nachala zalogovka (SOH), kotoryj dalee budet nazyvat'sya liderom, mogut ispol'zovat'sya libo dlya generacii gorizontal'nyh podvizhek, libo dlya formirovaniya cepochki povtoryayushchihsya sim- volov. Dlina gorizontal'noj podvizhki ili cepochki reguliru- etsya vnutrennimi tabulyacionnymi ostanovami (tabulyaciyami), ustnavlivaemymi s pomoshch'yu komandy ta. Razlichie sostoit v tom, chto, po umolchaniyu, simvol tab generiruet podvizhku, a lider formiruet cepochku tochek; s pomoshch'yu komand lc i tc mozhno izmenit', sootvetstvenno, simvoly liderov ili podvi- zhek. Sushchestvuet tri tipa vnutrennih tabulyacionnyh ostano- vov: dlya vyravnivaniya po levomu krayu tabulyacii, dlya vyrav- nivaniya po pravomu krayu tabulyacii i po centru tabulyacii. V tabl.4, privedennoj nizhe, D - rasstoyanie ot tekushchej pozi- cii vhodnoj stroki (gde byl obnaruzhen simvol tab ili lider) do sleduyushchej tabulyacii; "cepochka" sostoit iz vhod- nyh simvolov, soderzhashchihsya za simvolom tab (liderom) do sleduyushchego simvola tab (ili lidera) ili konca stroki; W - shirina "cepochki". 44 APK.00322-01 33 01-15 Tablica 4 ----------------------------------------------- |tip tabulyacii|dlina podvizhki |raspolozhenie | | |ili povtorenie | "cepochki" | | | simvolov | | |-------------+----------------+--------------| | Levyj | D |posle propuska| | | |rasstoyaniya D | | | | | | Pravyj | D - W |vyravnena po | | | |pravomu krayu | | | |v predelah D | | | | | | Central'nyj | D - W/2 |centrirovana | | | |otnositel'no | | | |pravogo kraya | | | |intervala D | ----------------------------------------------- Dlina gorizontal'noj podvizhki mozhet byt' otricatel'- noj, no dlina cepochki povtoryayushchihsya simvolov otricatel'noj byt' ne mozhet. Cepochki povtoryayushchihsya simvolov soderzhat ce- loe chislo simvolov. Simvoly tab i lidery, obnaruzhennye posle poslednej tabulyacii, ignoriruyutsya, no mogut byt' is- pol'zovany v kachestve priznakov konca "cepochki". Simvoly tabulyacii i vedushchie simvoly ne interpretiru- yutsya v rezhime kopirovaniya. Funkcii et i ea vsegda porozhda- yut neinterpretiruemye simvoly tabulyacii i liderov, soot- 45 APK.00322-01 33 01-15 vetstvenno, i v rezhime kopirovaniya ekvivalentny faktiches- kim simvolam tabulyacii i vedushchim simvolam. 9.2. Polya Pole zaklyucheno mezhdu paroj simvolov-razgranichitelej polej i sostoit iz podcepochek, razdelennyh simvolami indi- katora zapolneniya. Dlina polya ravna rasstoyaniyu ot pozicii nachala polya vo vhodnoj stroke i do sleduyushchej tabulyacii. Raznost' mezhdu dlinoj polya i summarnoj dlinoj vseh podce- pochek opredelyaet prostranstvo gorizontal'nogo zapolneniya, kotoroe raspredelyaetsya mezhdu sootvetstvuyushimi oblastyami zapolneniya. Velichina zapolnyamogo prostranstva mozhet byt' otricatel'noj. Naprimer, esli ogranichitelem polya yavlyaetsya simvol #, a ukazatelem zapolneniya ^, to #^xxx^right# oboz- nachaet vyrovnennuyu po pravomu krayu cepochku, s cepochkoj xxx, otcentrovannoj na ostavshemsya prostranstve. Ispol'zuyutsya sleduyushchie komandy: ta - ustanovit' tabulyacii. Forma vyzova komandy ta - .ta Nt ...., nachal'noe znachenie - 0.81, net ar- gumentov - otsutstvuet, primechanie - E, n. Usta- navlivaet tabulyacii i ih tipy. t=R sootvetstvuet vyravnivaniyu sprava; t=C sootvetstvuet centriro- vaniyu; pri otsutstvii t podrazumevaetsya vyravni- vanie sleva. Po umolchaniyu ustanovleny tabulyacci na kazhdye 0.8 dyujma (ili 8n). Znacheniya argumen- tov razdelyayutsya probelami; znachenie, pered koto- 46 APK.00322-01 33 01-15 rym stoit znak plyus (``+''), rassmatrivaetsya kak prirashchenie k znacheniyu predydushchej tabulyacii; tc - ustanovit' simvol zapolneniya tabulyacij. Forma vyzova komandy tc - .tc c, nachal'noe znachenie - otsutstvuet, net argumentov - otsutstvuet, pri- mechanie -E. Simvolom, zapolnyayushchim tabulyacionnye podvizhki stanovitsya simvol c, ili (esli c ot- sutstvuet) udalyaetsya, oboznachaya tem samym pod- vizhki; lc - ustanovit' simvol zapolneniya liderov. Forma vy- zova komandy lc - .lc c, nachal'noe znachenie - net, net argumentov - otsutstvuet, primechanie - E. Simvolom, zapolnyayushchim lidery, stanovitsya simvol c, ili (esli c otsutstvuet) udalyaetsya, oboznachaya tem samym podvizhki; fc - ustanovit' simvoly ogranichitelya i zapolnitelya polya. Forma vyzova komandy fc - .fc a b, nachal'- noe znachenie - vyklyuchit', net argumentov - vyk- lyuchit', primechanie - net. Simvol ogranichitelya polya ustanavlivaetsya v a; indikator zapolneniya ustanavlivaetsya v b, a v sluchae otsutstviya b - v probel. Esli argumenty otsutstvuyut, mehanizm up- ravleniya polyami vyklyuchaetsya. 47 APK.00322-01 33 01-15 10. SOGLASHENIYA O VVODE/VYVODE I PREOBRAZOVANIYA SIMVOLOV 10.1. Preobrazovaniya vhodnyh simvolov Pif vosprinimaet nekotorye upravlyayushchie simvoly koda ASCII, takie kak simvol gorizontal'noj tabulyacii (HT), simvol nachala zagolovka (SOH), simvol vozvrata na shag (BS). Simvol novoj stroki (NL) (ili LF) ispol'zuetsya v ka- chestve razgranichitelya vhodnyh strok. Krome togo, vosprini- mayutsya sluzhebnye simvoly nachala teksta (STX), konca teksta (ETX), oprosa (ENQ), opoznaniya (ACK) i "zvonok" (BEL), ko- torye mogut ispol'zovat'sya v kachestve razgranichitelej. Vse prochie simvoly ignoriruyutsya. Simvol pereklyucheniya ``\'' ukazyvaet, chto za nim budet sledovat' simvol, kotoryj oboznachaet drugoj opredelennyj simvol ili nekotoruyu funkciyu. Polnyj perechen' etih posle- dovatel'nostej priveden v razd.23. Simvol ``\'' ne sleduet putat' s simvolom pereklyucheniya koda (ESC) koda ASCII. CHto- by v vyhodnom tekste poyavilsya simvol ``\'', nuzhno vospol'- zovat'sya posledovatel'nost'yu ``\\'' vo vhodnom tekste. Simvol pereklyucheniya mozhno izmenit' s pomoshch'yu komandy ec. Dlya raspechatki dejstvuyushchego v dannyj moment simvola perek- lyucheniya mozhno vospol'zovat'sya funkciej \e. Pri zhelanii ili neobhodimosti mehanizm pereklyucheniya koda mozhet byt' otklyu- chen i vosstanovlen pri pomoshchi komandy eo. 48 APK.00322-01 33 01-15 Ispol'zuyutsya sleduyushchie komandy ustanovki pereklyuchate- lej: ec - ustanovit' simvol pereklyucheniya. Forma vyzova ko- mandy ec - .ec c, nachal'noe znachenie - e, net argumentov - e, primechanie - net. Ustanavlivaet simvol pereklyucheniya v c, a pri ego otstutstvii v e; eo - izmenit' sostoyanie mehanizma pereklyucheniya. Forma vyzova komandy eo - .eo, nachal'noe znachenie - vyklyuchit', net argumentov - net, primechanie - net. 10.2. Vozvrat i podcherkivanie Esli vyklyuchen rezhim kopirovaniya, to simvol vozvrata na shag (BS) koda ASCII obychno zamenyaetsya na gorizontal'nuyu podvizhku v obratnom napravlenii na shirinu simvola probela. Funkciya podcherkivaniya, kak odna iz form postroeniya linij, opisana v podrazd.12.3. V sisteme pif podcherkivanie proiz- voditsya avtomaticheski pri pomoshchi vklyucheniya kursiva (koman- doj ft ili funkciej \f) ili pri pomoshchi komandy ul. Sleduet otmetit', chto podcherkivayutsya ne vse simvoly, a tol'ko bukvy i cifry; znaki i probely ostayutsya nepodcherknutymi. Ispol'zuyutsya sleduyushchie komandy: ul - podcherkivat' sleduyushchie N strok ishodnogo teksta. Forma vyzova komandy ul - .ul N, nachal'noe zna- 49 APK.00322-01 33 01-15 chenie - vyklyuchit', net argumentov - N=1, prime- chanie - E. Podcherknut' tekst, soderzhashchijsya v sleduyushchih N strokah vhodnogo teksta, pri etom rezhim "bez zapolneniya" ne vklyuchaetsya. Vyhod, sgenerirovannyj komandoj tl, popadaet pod dej- stvie komandy ul, no pri etom N ne umen'shaetsya. Esli N>1, to imeetsya opasnost' togo, chto inter- polirovannoe "zahvatyvaniem" makro mozhet vydat' stroki teksta v predelah dannogo prostranstva. CHtoby izbezhat' etogo mozhno sootvetstvuyushchim obra- zom izmenyat' okruzhenie (sm. razd. 17); ft - izmenit' tekushchij shrift. Forma vyzova komandy ft - .ft F, nachal'noe znachenie - obychnyj, net argu- mentov - predydushchij, primechanie - E. Zamenyaet tekushchij shrift na F. CHtoby posleduyushchij tekst byl podcherknut, nuzhno ukazat' F=I. CHtoby vernut'sya k obychnomu shriftu (bez podcherkivaniya) nado ukazat' F=R. Analogichnyj rezul'tat poluchitsya, esli vos- pol'zovat'sya funkciej pepeklyucheniya shrifta \fN, gde N - tip shrifta; cu - podcherkivat' sleduyushchie N strok. Forma vyzova ko- mandy cu - .cu N, nachal'noe znachenie - vyklyu- chit', net argumentov - N=1, primechanie - E. Raz- novidnost' komandy ul, pri kotoroj podcherkivaet- sya kazhdyj simvol. 50 APK.00322-01 33 01-15 10.3. Upravlyayushchie simvoly Kak upravlyayushchij simvol ".", tak i upravlyayushchij simvol, ne vyzyvayushchij preryvanij, " ' " pri zhelanii mozhno izme- nit'. Razumeetsya, takoe izmenenie dolzhno soglasovyvat'sya s postroeniem lyubyh makroopredelenij, vstrechayushchihsya v prede- lah dejstviya etogo izmeneniya, i, osobenno, vseh makroko- mand, vyzyvaemyh po "lovushke". Ispol'zuyutsya sleduyushchie komandy ustanovki upravlyayushchego simvola: cc - ustanovit' osnovnoj upravlyayushchij simvol. Forma vyzova komandy cc - .cc c, nachal'noe znachenie - ., net argumentov - ., primechanie - E. Osnovnoj upravlyayushchij simvol ustanavlivaetsya v "c" ili, esli c otsutstvuet, ustanavlivaetsya v "."; c2 - ustanovit' upravlyayushchij simvol bez preryvaniya. Forma vyzova komandy c2 - c2 c, nachal'noe znache- nie - ', net argumentov - ', primechanie - E. Upravlyayushchij simvol, ne vyzyvayushchij preryvaniya za- polneniya, ustanavlivaetsya v "c" ili, esli c ot- sutstvuet, ustanavlivaetsya v " ' " (apostrof). 51 APK.00322-01 33 01-15 10.4. "Prozrachnyj" vyvod Vhodnaya stroka, nachinayushchayasya s posledovatel'nosti \! schityvaetsya v rezhime kopirovaniya i vyvoditsya "v chistom vide" (bez nachal'nogo simvola \!), inymi slovami, eti stroki ne postupayut na obrabotku. |tot mehanizm mozhno is- pol'zovat' dlya peredachi kakomu-libo postprocessoru uprav- lyayushchej informacii ili pomeshcheniya upravlyayushchih strok v makro- komandu, sozdannuyu pri otvedeniyah. 10.5. Kommentarii i skrytye simvoly novoj stroki Slishkom dlinnye vhodnye stroki, kotorye dolzhny osta- vat'sya odnoj strokoj (naprimer, opredelenie cepochki ili nezapolnyaemyj tekst), mozhno razbit' na neskol'ko fiziches- kih strok, kazhdaya iz kotoryh, krome poslednej, dolzhna za- kanchivat'sya znakom pereklyucheniya \. Posledovatel'nost' "\(simvol novoj stroki)" vsegda ignoriruetsya, esli tol'ko ona ne poyavlyaetsya v kommentariyah. Kommentarij mozhno vsta- vit' v konec lyuboj stroki, napisav pered nim \". Simvol novoj stroki, nahodyashchijsya v konce kommentariya, ne mozhet byt' skrytym. Stroka, nachinayushchayasya s \", budet vosprini- mat'sya kak pustaya stroka i obrabatyvat'sya kak komanda .sp 1. Kommentarij mozhet takzhe zanimat' celuyu stroku esli ona nachinaetsya s ``.\"''. 52 APK.00322-01 33 01-15 11. LOKALXNYE VERTIKALXNYE I GORIZONTALXNYE PEREMESHCHENIYA I FUNKCIYA SHIRINY 11.1. Lokal'nye peremeshcheniya Funkcii \v'N' i \h'N' mozhno ispol'zovat' dlya lokal'- nyh peremeshchenij po vertikali i gorizontali, sootvetstven- no. Rasstoyanie N mozhet byt' otricatel'nym. Peremeshcheniyami v polozhitel'nyh napravleniyah schitayutsya peremeshcheniya vpravo i vniz. Lokal'nym peremeshcheniem yavlyaetsya lyuboe peremeshchenie v predelah odnoj stroki. CHtoby izbezhat' neozhidannyh verti- kal'nyh smeshchenij, neobhodimo sledit' za tem, chtoby obshchee peremeshchenie po vertikali, v predelah slova v zapolnennom tekste i v predelah stroki v ostal'nyh sluchayah, ravnyalos' nulyu. Posledovatel'nosti pereklyucheniya, obespechivayushchie raz- lichnye podvizhki, ukazany v tabl.5. 53 APK.00322-01 33 01-15 Tablica 5 Pereklyuchatel'nye posledovatel'nosti --------------------------------------------------- Iverti- | dejstvie Igorizon-| dejstvie I Ikal'nye | Italnye | I Ipodvizhki| Ipodvizhki| I I--------+---------------+--------+-------------- I I \v'N' |podvinut' I \h'N' |podvinut' I I |na rasstoyanie NI |na rasstoyanie NI I \u |1/2 stroki I\(prob.)|nezapolnyat' I I | vverh I |probel I I \d |1/2 stroki I \0 |probel rav- I I | vniz I |nyj shirine I I \r |1 stroku I |cifry I I | vverh I | I --------------------------------------------------- 11.2. Funkciya shiriny Funkciya shiriny \w'cepochka' vychislyaet shirinu "cepochki" (v bazovyh edinicah). Izmeneniya tipa shrifta mozhno bezopas- no vstavlyat' v cepochku, pri etom tekushchie usloviya formati- rovaniya ne izmenyayutsya. Naprimer, komandu .ti -\w'1.'u mozhno bylo by ispol'zovat' dlya formirovaniya vremennogo otstupa sleva ravnogo razmeru cepochki "1." 54 APK.00322-01 33 01-15 11.3. Otmetka gorizontal'nogo polozheniya Pereklyuchayushchaya posledovatel'nost' \kx vyzovet zapomi- nanie v registre x tekushchej gorizontal'noj pozicii vo vhod- noj stroke. Pereklyuchayushchaya posledovatel'nost' \jx vyzovet zapomi- nanie v registre x tekushchej gorizontal'noj pozicii v vyhod- noj stroke. Naprimer, konstrukciya \jxslovo \h'|\nx+2u'slovo budet vydelyat' "slovo", posredstvom vozvrata k ego nachalu i povtornoj ego pechati, v rezul'tate chego budet napechatano zhirnym shriftom "slovo". Pri ispol'zovanii etoj konstrukcii sleduet imet' v vidu, chto zanesenie znacheniya v registr proizojdet posle togo, kak budet sformirovano slovo, i v takoj konstrukcii \jxslovo\h'|\nx+2u'slovo soderzhimoe registra x budet ravno nulyu (esli etot registr ranee ne byl opredelen). 55 APK.00322-01 33 01-15 12. NEKOTORYE SPECIALXNYE PRIEMY PECHATI 12.1. Pechat' s nalozheniem na odnoj pozicii Funkciya pechati s nalozheniem v odnoj pozicii \o'cepoch- ka' obespechivaet avtomaticheski centrirovannuyu pechat' na odnoj pozicii do devyati simvolov. Simvoly "cepochki" pecha- tayutsya odin poverh drugogo s vyravnivaniem po centru kazh- dogo simvola. Obshchaya shirina budet ravna shirine samogo shiro- kogo simvola. Cepochka ne dolzhna soderzhat' lokal'nyh verti- kal'nyh peremeshchenij. Naprimer, posledovatel'nost' \o'+_' dast _. 12.2. Simvoly nulevoj shiriny Funkciya \zc budet vyvodit' simvol c, ne ostavlyaya za nim intervala, i mozhet byt' ispol'zovana dlya polucheniya kombinacii simvolov posredstvom pechati na odnom meste s vyravnivaniem po levomu krayu. Naprimer, posledovatel'nost' \zO/ napechataet perecherknutoe O, a posledovatel'nost' \z|_ napechataet _. 56 APK.00322-01 33 01-15 12.3. Risovanie linij Pri ispol'zovaniii funkcii \l'Nc' budet formirovat'sya cepochka povtoryayushchihsya simvolov 'c' sleva napravo dlinoj N. Esli 'c' mozhno ponyat' kak prodolzhenie vyrazheniya N, to ego mozhno otdelit' ot N simvolom \&. Esli 'c' ne zadano, to ispol'zuetsya simvol podcherkivaniya '_'. Pri otricatel'nom N pered "risovaniem" cepochki vypolnyaetsya gorizontal'noe pe- remeshchenie v obratnom napravlenii na rasstoyanie N. Esli ot- noshenie N/(shirina 'c') imeet ostatok, to interval, ravnyj znacheniyu ostatka, pomeshchaetsya v nachale (s levogo kraya) ce- pochki. V teh sluchayah, kogda simvoly dolzhny byt' napechatany slitno, naprimer, linejka podcherkivaniya, ostavsheesya prostranstvo zakryvaetsya s pomoshch'yu nalozheniya. Esli N men'she shiriny simvola 'c', to pechataetsya odin simvol 'c', i ego seredina nahoditsya na rasstoyanii N. Naprimer, mozhno napisat' sleduyushchuyu makrokomandu dlya podcherkivaniya cepochki: .de us \\$1\\l'-\\w%\\$1%u_' .. Takim obrazom, vyzvav makro .us "Podcherknutye slova" poluchim __________________ Funkciya \L'Nc' budet "vycherchivat'" vertikal'nuyu li- niyu, sostoyashchuyu iz simvolov c, raspolozhennyh v stolbec s intervalom v odnu stroku; esli "c" ne ukazano, to, po 57 APK.00322-01 33 01-15 umolchaniyu, ispol'zuetsya simvol "|" (vertikal'naya cherta). Liniya nachinaetsya bez kakogo-libo nachal'nogo smeshcheniya otno- sitel'no osnovaniya tekushchej stroki. Polozhitel'noe N oprede- lyaet liniyu, provedennuyu vniz, a otricatel'noe N opredelyaet liniyu, provedennuyu vverh. Posle vycherchivaniya linii nikakih kompensiruyushchih peremeshchenij ne vypolnyaetsya i tekushchee polo- zhenie tochki budet nahodit'sya v konce linii. Ispol'zuya sovmestno funkcii vycherchivaniya gorizontal'- nyh i vertikal'nyh lineek, mozhno, naprimer, zaklyuchit' ne- kotoryj blok teksta v ramku. 58 APK.00322-01 33 01-15 13. PERENOS SLOV Mehanizm avtomaticheskogo perenosa slov mozhno otklyu- chit' i vklyuchit'. Simvol ukazatelya perenosa (posledovatel'- nost' \%)mozhno vstavit' v slovo dlya ukazaniya zhelaemyh po- zicij perenosa ili napisat' pered slovom dlya otmeny pere- nosa tol'ko etogo slova. Dlya avtomaticheskogo perenosa podhodyat tol'ko slova, soderzhashchie vnutri cepochku alfavitnyh simvolov, okruzhennuyu cepochkami nealfavitnyh simvolov. Slova ishodnogo teksta, soderzhashchie defisy (minusy), naprimer, takie kak iz-za, temno-sero-fioletovyj ili Semenov-Tyan'-SHan'skij perenosyat- sya posle etih simvolov nezavisimo ot togo, dejstvuet ili net rezhim avtomaticheskogo perenosa. Ispol'zuyutsya sleduyushchie komandy perenosa slov: nh - otklyuchit' rezhim avtomaticheskogo perenosa. Forma vyzova komandy nh - .nh, nachal'noe znachenie - da, net argumentov - net, primechanie - E; hy - vklyuchit' rezhim avtomaticheskogo perenosa slov. Forma vyzova komandy hy - .hy N, nachal'noe zna- chenie - N=1, net argumentov - N=1, primechanie - E. Vklyuchit' avtomaticheskij perenos slov pri N>=1 ili otklyuchit' pri N=0. hc - ustanovit' simvol ukazatelya perenosa. Forma vy- zova komandy hc - .hc c, nachal'noe znachenie - 59 APK.00322-01 33 01-15 net, net argumentov - net, primechanie -E. Simvol ukazatelya perenosa ustanavlivaetsya v c ili po umolchaniyu \%. Ukazatel' perenosa pri pechati ne vyvoditsya. 60 APK.00322-01 33 01-15 14. ZAGOLOVKI IZ TREH CHASTEJ Komanda formirovaniya zagolovka tl obespechivaet avto- maticheskoe razmeshchenie v treh polyah stroki: levom, central'nom i pravom. Dlina zagolovka opredelyaetsya koman- doj lt. Komandu tl mozhno ispol'zovat' gde ugodno i ona ne zavisit ot processa obrabotki obychnogo teksta. Kak pravi- lo, eta komanda ispol'zuetsya v makrokomandah obrabotki na- chala i konca stranicy. Ispol'zuyutsya sleduyushchie komandy formirovaniya zagolov- ka: tl - "zagolovok iz treh chastej". Forma vyzova komandy tl - .tl 'lev.'centr.'prav.', nachal'noe znachenie - net, net argumentov - net, primechanie -net. Cepochki "lev.", "centr." i "prav." vyravnivayutsya po levomu krayu, centriruyutsya i vyravnivayutsya po pravomu krayu, sootvetstvenno, v predelah tekushchej dliny zagolovka. Lyubaya iz cepochek mozhet byt' pustoj i dopuskaetsya perekrytie. V kachestve razgranichitelya cepochek mozhno ispol'zovat' lyuboj simvol. Esli v lyubom iz polej vstrechaetsya simvol nomera stranicy (iznachal'no %), to on zamenyaetsya na tekushchij nomer sranicy, v formate, kotoryj us- tanovlen dlya registra %, soderzhashchego nomer stra- nicy; 61 APK.00322-01 33 01-15 pc - ustanovit' simvol nomera stranicy. Forma vyzova komandy pc - .pc c, nachal'noe znachenie - %, net argumentov - vyklyuchit', primechanie - net. Simvol nomera stranic ustanavlivaetsya v c ili (esli ar- gument otsutstvuet) simvol likvidiruetsya. Registrom nomera stranicy ostaetsya %; lt - ustanovit' dlinu zagolovka iz treh chastej. Forma vyzova komandy lt - .lt _N,nachal'noe znachenie - 65n, net argumentov - predydushchee, primechanie -E,n. Dlina zagolovka iz treh chastej ustanavli- vaetsya v _N. Dlina stroki i dlina zagolovka yav- lyayutsya nezavisimymi velichinami. V zagolovkah otstupy ne delayutsya. 62 APK.00322-01 33 01-15 15. NUMERACIYA STROK VYHODNOGO TEKSTA S pomoshch'yu komandy nm mozhno podklyuchit' mehanizm avto- maticheskoj posledovatel'noj numeracii strok vyhodnogo teksta. Pri zadanii etogo rezhima pered kazhdoj vyhodnoj 4 strokoj pechataetsya trehznachnyj nomer stroki v vide arabskih cifr, za kotorym sleduet probel. Takim obrazom, stroki smeshchayutsya na chetyre pozicii, no dlina stroki sohra- nyaetsya. Dlya togo chtoby obespechit' sovpadenie pravogo kraya 8 s imevshimsya ranee, mozhet potrebovat'sya umen'shenie dliny strok. Pustye stroki i prochie promezhutki, a takzhe stroki, sgenerirovannye po komande tl, ne numeruyutsya. Numeraciyu mozhno vremenno otmenit' s pomoshch'yu komandy nn; ee takzhe 12 mozhno otmenit', ispol'zuya komandu .nm bez parametrov, za kotoroj pozdnee dlya vosstanovleniya numeracii s poslednego nomera posleduet .nm +0. Krome togo, v pole nomera stroki mozhno zadat' otstup I dlya nomera stroki i kolichestvo pro- 16 belov S, otdelyayushchih tekst ot nomera. Dalee mozhno po- probovat', chtoby pechatalis' tol'ko te nomera strok, koto- rye kratny nekotoromu chislu M (pri etom pole numeracii u drugih strok ostaetsya nezapolnennym). 20 Ispol'zuyutsya sleduyushchie komandy: nm - vklyuchit' rezhim numeracii vyhodnyh strok. Forma vyzova komandy nm - .nm _N M S I, nachal'noe zna- chenie - net, net argumentov - vyklyuchit', prime- chanie -E. Esli _N zadano, vklyuchaetsya numeraciya 63 APK.00322-01 33 01-15 strok i sleduyushchej stroke prisvaivaetsya nomer _N po otnosheniyu k poslednej pronumerovannoj stroke. Znacheniyami po umolchaniyu yavlyayutsya M=1, S=1 i I=0. Parametry, sootvetstvuyushchie propushchennym argumen- tam, ne menyayutsya; necifrovoj argument schitaetsya otsutstvuyushchim. Pri otsutstvii vseh argumentov rezhim numeracii otmenyaetsya. Nomer sleduyushchej stroki sohranyaetsya dlya vozmozhnogo dal'nejshego ispol'zovaniya v chislovom registre ln; nn - ne numerovat' sleduyushchie N strok. Forma vyzova komandy nn - .nn N, nachal'noe znachenie -net, net argumentov - N=1, primechanie - E. Sleduyushchie N strok vyhodnogo teksta ne numeruyutsya. V kachestve primera, tekst dannogo razdela byl pronu- merovan pri pomoshchi komandy .nm 1 4, kotoraya raspolozhena v nachale razdela. V konce pervogo abzaca stoyalo .nm, a pered 24 etim abzacem numeraciya byla vosstanovlena pri pomoshchi ko- mandy .nm +0, i v konce razdela stoit snova .nm. Dlina strok byla takzhe izmenena v sootvetstvuyushchih mestah. Drugim primerom mozhet sluzhit' zapis' vida .nm +5 5 x 3, kotoraya 28 vklyuchaet rezhim numeracii, pri etom nomer ocherednoj stroki teksta budet na 5 bol'she nomera poslednej pronumerovannoj stroki; M=5 oznachaet, chto nomer stavitsya pered kazhdoj pyatoj strokoj; interval mezhdu tekstom i nomerom ne izmenya- 32 etsya i otstup I ustanavlivaetsya ravnym 3. 64 APK.00322-01 33 01-15 16. USLOVNYJ VVOD TEKSTA CHerez "c" oboznacheno odnosimvol'noe vstroennoe imya usloviya, "!" oboznachaet otricanie, "N" - chislennoe vyrazhe- nie; "cep1" i "cep2" yavlyayutsya cepochkami, razdelennymi lyubym simvolom, ne vstrechayushchimsya v cepochkah i otlichnym ot probela i cifry; "chto-libo" - to, chto vvoditsya po usloviyu. Ispol'zuyutsya sleduyushchie komandy: if - 1-aya forma vyzova komandy - .if c chto-libo, na- chal'noe znachenie - net, net argumentov -net, primechanie - net. Esli uslovie c istinno, vvesti "chto-libo"; v sluchae, kogda vvodimyj tekst zani- maet neskol'ko strok, ispol'zujte \- chto-libo \- . 2-aya forma vyzova komandy - .if !s chto-libo, nachal'noe znachenie - net, net argumentov - net, primechanie -net. Esli uslovie s lozhno, to vvesti "chto-libo". 3-ya forma vyzova komandy - .if N chto-libo, nachal'noe znachenie - net, net argumen- tov - net, primechanie - u. Esli vyrazhenie N > 0, to vvesti "chto-libo". 4-aya forma vyzova komandy - .if !N chto-libo, nachal'noe znachenie - net, net argumentov - net, primechanie - u. Esli vyrazhenie N <= 0, to vvesti "chto-libo". 5-aya forma vyzova komandy - .if 'cep1'cep2' chto-libo, nachal'noe znachenie - net, net argumentov - net, primechanie - net. Esli "cep1" sovpadaet s "cep2", to vvesti 65 APK.00322-01 33 01-15 "chto-libo". 6-aya forma vyzova komandy - .if !'cep1'cep2' chto-libo, nachal'noe znachenie - net, net argumentov - net, primechanie - net. Esli "cep1" ne sovpadaet s "cep2", to vvesti "chto- libo"; ie - chast' if konstrukcii if-else. Forma vyzova ko- mandy ie - .ie c chto-libo, nachal'noe znachenie - net, net argumentov - net, primechanie - u. Vse perechislennye vyshe formy spravedlivy i dlya etoj komandy (analogichnoj if); el - chast' else konstrukcii if-else. Forma vyzova ko- mandy el - .el c chto-libo, nachal'noe znachenie - net, net argumentov - net, primechanie - u. Imena vstroennyh uslovij privodyatsya na ris.2 Vstroennye usloviya ------------------------------------------- | imya | imeet znachenie "istina", esli | |usloviya| | |-------|---------------------------------| | o | nomer tekushchej stranicy -nechetnyj| | e | nomer tekushchej stranicy - chetnyj | ------------------------------------------- ris.2 Esli uslovie c istinno, ili esli chislo N bol'she nulya, ili esli cepochki tozhdestvenno sovpadayut (vklyuchaya peremeshche- 66 APK.00322-01 33 01-15 niya, razmer simvolov i shrift), to vvoditsya "chto-libo". Esli usloviyu, chislu ili sravnivaemym cepochkam predshestvuet znak !, to smysl usloviya menyaetsya na protivopolozhnyj. Probely mezhdu usloviem i tekstom, prednaznachennym dlya vvoda ("chto-libo"), ignoriruyutsya. "CHto-libo" mozhet soder- zhat' libo odnu stroku ishodnogo teksta (obychnogo teksta, makrokomandy ili chego-nibud' eshche), libo neskol'ko vhodnyh strok. V sluchae neskol'kih strok pervaya stroka dolzhna na- chinat'sya s levogo ogranichitelya \- . Poslednyaya stroka dolzhna zakanchivat'sya pravym ogranichitelem \- . Komanda ie (if-else) identichna komande if za isklyuche- niem togo, chto zapominaetsya uslovie vvoda. Posleduyushchaya do- polnyayushchaya komanda el (else) budet ispol'zovat' obratnoe znachenie etogo usloviya. Bloki ie-el mogut byt' vlozhennymi. Privedem neskol'ko primerov: .if e .tl'CHetnaya stranica' %''' eta komanda vyvodit zagolovok, esli nomer tekushchej stranicy chetnyj. V sleduyushchem primere: .ie \n%>1 \{\ 'sp 3v .tl 'stranica %''' 'sp |7v \}\ .el .sp |15v pervaya stranica obrabatyvaetsya ne tak, kak ostal'nye. 67 APK.00322-01 33 01-15 17. PEREKLYUCHENIYA OKRUZHENIYA Nekotorye parametry, kotorye upravlyayut obrabotkoj teksta sobirayutsya vmeste v "okruzhenie", kotoroe mozhet pe- reklyuchat'sya pol'zovatelem. Parametry "okruzheniya" eto te parametry, v kolonke primechanij k opisaniyu kotoryh ukazano E; dobavim, chto chastichno sobrannye stroki i slova tozhe po- padayut v "okruzhenie". Vse drugie parametry global'ny i ne zavisyat ot "okruzheniya", naprimer, stranichno- orientirovannye parametry, parametry otvedenij, chislovye registry i opredeleniya makro i cepochek. Pri nachal'nom vklyucheniii kakogo-libo okruzheniya vse parametry prinimayut znacheniya po umolchaniyu. Ispol'zuetsya komanda ev - pereklyu- chit' okruzhenie. Forma vyzova komandy ev - .ev N, nachal'noe znachenie - N=0, net argumentov - predydushchee, primechanie - net. Tekushchee okruzhenie pereklyuchaetsya na okruzhenie N (0<=N<=2). Pereklyuchenie proizvoditsya kak-by "upryatyvaniem" tekushchego okruzheniya, i, poetomu, vosstanovlenie ("izvleche- nie") predydushchego okruzheniya dolzhno obyazatel'no proizvo- dit'sya pri pomoshchi komandy .ev, a ne kakoj-libo opredelen- noj ssylki. 68 APK.00322-01 33 01-15 18. VSTAVKI IZ STANDARTNOGO VVODA Vvod mozhet byt' vremenno pereklyuchen na ustrojstvo standartnogo vvoda pri pomoshchi komandy rd. Obratnoe perek- lyuchenie proishodit pri obnaruzhenii dvuh podryad pustyh strok (dopolnitel'naya pustaya stroka ne ispol'zuetsya). |tot mehanizm pozvolyaet vnosit' ispravleniya i dopolneniya, nap- rimer, v dokumentaciyu tipa pisem. V sisteme DEMOS stan- dartnymi sredstvami vvoda mogut byt' klaviatura pol'zova- telya, liniya peredachi ili fajl. Ispol'zuyutsya sleduyushchie ko- mandy: rd - chitat' vstavku so standartnogo vvoda. Forma vy- zova komandy rd - .rd podskazka, nachal'noe zna- chenie - net. net argumentov - BEL, primechanie - net. CHitat' vstavku s ustrojstva standartnogo vvoda do teh por, poka ne budut najdeny podryad dva znaka novoj stroki. Esli standartnym ustroj- stvom vvoda yavlyaetsya klaviatura pol'zovatelya, na terminal pol'zovatelya vyvoditsya "podskazka". S komandoj rd mozhno obrashchat'sya kak s makrokomandoj i pomeshchat' posle "podskazki" argumenty; ex - vyhod iz sistemy pif. Forma vyzova komandy ex - .ex, nachal'noe znachenie - net, net argumentov - net, primechanie - net. Po etoj komande osu- shchestvlyaetsya vyhod iz sistemy pif. Obrabotka 69 APK.00322-01 33 01-15 teksta prekrashchaetsya, kak v sluchae zaversheniya vsego vvoda. Esli izmeneniya dolzhny byt' vvedeny s klaviatury ter- minala, v to vremya kak vyhodnoj tekst vyvoditsya na termi- nal, parametr komandnoj stroki - q budet otmenyat' otobra- zhenie na terminale vvodimoj s klaviatury informacii i podskazki, za isklyucheniem signala "zvonok" (BEL). Regulyarnyj vvod i vvod vstavok ne mozhet proizvodit'sya odnovremenno s ustrojstva standartnogo vvoda. Naprimer, mnogochislennye kopii tipovogo pis'ma mozhno podgotovit', zapisyvaya izmeneniya ko vsem kopiyam v odin fajl, ispol'zuemyj v kachestve standartnogo vvoda, i za- stavlyaya fajl, soderzhashchij pis'mo, neodnokratno vyzyvat' sebya s pomoshch'yu komandy nx (sm. razd.19). Process v konce koncov zakonchitsya po komande eh v fajle ispravlenij. 70 APK.00322-01 33 01-15 19.