#  Du f}r en snyggare utskrift av detta dokument
#  genom att k|ra den genom SFORM.
.linespace 1
#  [ndra till ".parsep 0.5" om du har en skrivare
#  som klarar halv radmatning.
.parsep 1
#  [ndra till ".command _+" om du har en skrivare
#  som klarar understrykning.
.command _

.space 0
.center
  SFORM
  Textformaterare f|r printerutskrifter

  David Andersson
  1991-03-16
.adjust

.heading 1
    Inledning

SFORM {r ett program som formaterar texter
f|r utskrift p} skrivare.
N{r man skriver in texten beh|ver man t% ex inte t{nka p}
att text-rader ska bli lagom l}nga s} att
h|ger_marginalen blir n}gorlunda j{mn.
Programmet kan ocks} sk|ta sid- och kapitel_numrering.
Man kan t% ex enkelt f} under_strykning eller fet stil
p} textavsnitt utan att beh|va t{nka p}
vilka styrkoder skrivaren beh|ver.

SFORM kan l{sa text direkt fr}n editorn TED
om den {r inladdad.

I det f|ljande kommer jag att h{nvisa till den fil
som inneh}ller den text som ska formateras
som +k{lltexten+. Kallas {ven infilen.

I k{lltexten kan man styra formateringen genom
speciella kommandon.
Det finns i huvudsak tv} slags kommandon,
rad-kommandon som b|rjar med punkt (.) och
tecken-kommandon som b|rjar med utropstecken (%!).
[ven tecknen br{dg}rd (#) och procent (%%), har speciella funktioner.

.heading 1
   Rad-kommandon

Rad-kommandon b|rjar med en punkt f|rst p} en rad.
Kommandona kan f|rkortas till fyra bokst{ver och
kan skrivas b}de med versaler och gemener.

.heading .1
   Moder

SFORM arbetar alltid i en av fem moder.
De kallas adjust%-, left%-, center%-, right- och exact-mode.
Man v{ljer vilken mode som forts{tt_ningsvis ska
g{lla med ett av f|ljande rad-kommandon.

.keep
   %.ADJUST

I adjust-mode f|rs|ker SFORM justera texten genom att bryta rader
s} att de blir s} l}ng att de n}r h|ger_marginalen.
Det betyder att om en rad i k{lltexten {r f|r l}ng
s} flyttar den ner ord fr}n slutet p} raden till rad under
och om en rad {r f|r kort flyttar den upp ord,
som f}r plats, fr}n raden under.
En rad i k{lltexten motsvaras i allm{nhet +inte+ av
en rad i den formaterade texten.
Flera mellanslag i f|ljd i k{lltexten kommer att
bli ett mellanslag i den formaterade texten.

(Programmet }stadkommer +inte+ s.k. rak h|ger_marginal.)

I adjust-mode kommer texten att betraktas som
uppdelad i paragrafer (stycken).
Tv} paragrafer skiljs }t av en eller flera tom-rader
eller av en eller flera rad-kommandon, vilka som helst.
F|rsta raden i en paragraf {r indragen lite extra,
hur mycket kan v{ljas med rad-kommandona
%.PARINDENT och %.INDENT.

.keep 5
   %.LEFT
.space 0
   %.CENTER
.space 0
   %.RIGHT

I left-%, center- och right-mode
kommer raderna i k{lltexten att respektive
v{nster_justeras, centreras eller h|ger_justeras.
Rader bryts ej.
En rad i k{lltexten motsvaras d} av
en rad i den formaterade texten.
[ven h{r g{ller att flera mellanslag blir ett.

Om en rad {r s} l}ng att den |verskrider
h|ger_marginalen med mer {n ett f}tal tecken
ges ett felmeddelande.

.keep
   %.EXACT

I exact-mode g|rs ingen formatering av texten.
Varje rad i k{lltexten skrivs ut p} skrivaren som den {r.
Undantagen {r rader som b|rjar med punkt
som fortfarande tolkas som rad-kommandon
(s} att man kan l{mna exact-mode)
samt att texten fortfarande indenteras enligt
inst{lld v{nster_marginal.
Till skillnad fr}n de |vriga moderna s} tolkas
inga tecken-kommandon och multipla
mellanslag skrivs ut som de {r.

.heading .1
   Marginaler

.keep
   %.LMARGIN (n)

S{tt v{nster_marginal till position (n).
Alla textrader kommer att inleda med (n) st mellanslag
i utskriften.
Undantag {r rader vars indragning styrs av rad-kommandont
%.PARINDENT eller %.INDENT.
Om (n) inte anges s{tts v{nster_marginalen till 0.

.keep
   %.RMARGIN (n)

S{tt h|ger_marginal till position (n).
I adjust-mode kommer rader att brytas s} att de slutar
vid position (n).
I center-mode placeras texten mitt emellan aktuell v{nster
och h|ger marginal.
Om (n) inte anges s{tts h|ger_marginalen till 60.

.keep
   %.INDENT (n)

Anger att n{sta rad ska b|rja med en indragning (n)
steg ut|ver den som anges av aktuell v{nster_marginal.
Inga andra rader {n n{sta rad ber|rs.
Om (n) inte anges antas indragning med 3 steg.

.keep
   %.PARINDENT (n)

S{tt indragning f|r paragrafer i adjust-mode.
F|rsta raden i varje paragraf kommer automatiskt
att dras in (n) steg ut|ver aktuell v{nster_marginal.

Man kan tempor{rt |verrida den automatiska
indragningen genom rad-kommandot %.INDENT.
%.INDENT 0 f|re en paragraf g|r att dess f|rsta
rad kommer att b|rja i v{nster_marginalen.

Om (n) inte anges sker automatiskt indragning med 3 steg.

%.INDENT och %.PARINDENT kan ges negativa argument.
Se exemplet f|r tecken-kommandot %!%& (Tab).

.heading .1
    Sidbrytning

SFORM h}ller reda p} hur m}nga rader som f}r plats p} en sida
och genererar form feed till skrivaren n{r s} m}nga
rader skrivits ut.

.keep
   %.PAGELENGTH (n)

S{tt sidl{ngd. (n) anger antal nominella rader p} en sida.
En nominell rad {r 1%/6 tum.
Om (n) inte anges s{tts sidl{ngden till 65 rader.

.keep
   %.PAGE

B|rja p} en ny sida.
En form feed genereras s} att efterf|ljande text hamnar
|verst p} en ny sida.

.keep
   %.KEEP (n)

Om ett avsnitt i texten inte f}r delas upp
s} att det hamnar p} tv} olika sidor
s} inleder man avsnittet med med %.KEEP (n) d{r (n)
anger hur m}nga rader (i den formaterade texten)
som m}ste vara sammanh{ngande.

(n) anger nominella rader, a 1%/6 tum.
Om (n) inte anges kommer 3 rader att h}llas samman.

.keep
   %.PAGINATE (n)

S{tt p} eller st{ng av sid_numrering.
%.PAGINATE utan argument s{tter p} sid_numrering och
g|r att n{sta sida b|rjar numreras som sida nr 2.
(Den aktuella sidan blir sida nr 1.)
%.PAGINATE 0 st{nger av sid_numreringen.
Generellt g|r %.PAGINATE (n) med (n) st|rre {n 0 att n{sta sida
b|rjar numreras med (n%+1).

.heading .1
   Radmellanrum

.keep
   %.LINESPACE (n)

S{tt radavst}nd.
Anger hur stort avst}nd det ska vara mellan text-rader
(n)=1 ger 6 rader per tum.
(n)=1.5 ger 4 rader per tum.
(n)=2 ger 3 rader per tum.
Om (n) inte anges s{tts radavst}ndet till 1, dvs 6 rader per tum.

(Ett (n) mindre {n 1 ger obest{mbart resultat)

.keep
   %.PARSEPARATION (n)

Anger hur stort avst}nd det ska vara mellan paragrafer.
Ett paragraf_mellanrum markeras i k{lltexten
med en eller flera tomrader
eller med en eller flera rad-kommandon.
Med (n)=0 g|rs inget extra mellanrum mellan paragrafer
ut|ver valt radavst}nd (%.LINESPACE).
Om (n) inte anges s{tts mellanrummet till 1 rad (1%/6 tum).

.keep
   %.SPACE (n)

Deklarerar att ett mellanrum som ska reserveras i den
formaterade texten.
(n) anger mellanrummet i antal nominella rader (1%/6 tum).
Kommandot |verrider tempor{rt det mellanrum som angetts av
%.PARSEPARATION.
Om (n) inte anges blir mellanrummet 1 rad (1%/6 tum).

.keep
   Tomrader

En eller flera konsekutiva tomrader i k{lltexten
markerar paragraf_mellanrum.
I den formaterade texten erh}lls det paragraf_mellanrum
som deklarerades i det senaste %.PARSEPARATION-kommandot.
Default {r 1 nominell rad (1%/6 tum).

F|r att }stadkomma ett st|rre mellanrum i den formaterade texten
kan man inte anv{nda flera tomrader i k{lltexten.
Man b|r d} anv{nda rad-kommandot %.SPACE (n).

.heading .1
   \vriga rad-kommandon

.keep
   %.TABSTOPS (n1,n2,n3,...)

S{tter tabulator_l{gen i positionerna n1, n2, n3 o.s.v.
Positonerna anges relativt inst{lld v{nster_marginal.
Max }tta tabl{gen kan definieras.
Eventuella tidigare inst{llda tabulator_l{gen gl|ms bort.
Tecken-kommandot %!%& anv{nds f|r att g} till n{sta
tabulator_l{ge.
Se {ven %!%> och %!%:.

(Om man gl|mmer kommatecken mellan tab-l{gena
ges ingen felutskrift, med ober{kneligt resultat.)

.keep
   %.HEADING (n)

Efterf|ljande rad antas vara en rubrikrad.
Om (n) ej anges {r kommandot ekvivalent
med %.KEEP 3.
Om (n)=1 inleds rubrikraden med ett kapitelnummer.
Kapitelnummret {r 1 f|rsta g}ngen och r{knas upp med 1
varje g}ng den anv{nds.
Om (n)=0.1 inleds rubrikraden med ett under-kapitel-nummer.

(Man kan inte ha mer {n 9 underkapitel i ett kapitel.
Ingen felutskrift f}s om (n) har ett felaktigt v{rde.)

.keep 5
   %.PROPWIDTH
.space 0
   %.FIXEDWIDTH
.space 0
   %.DRAFTSTYLE

V{lj tecken_upps{ttning i skrivaren.
%.PROPWIDTH v{ljer en stil med variabel (proportionell) teckenbredd.
%.FIXEDWIDTH v{ljer en stil med konstant teckenbredd.
%.DRAFTSTYLE v{ljer en kantigare stiltyp,
som b|r ge en snabbare utskrift.

(Notera att din skrivare kan sakna n}gon av dessa stilar.
N{r stil med variabel teckenbredd anv{nds kan
tabulering ge oj{mna tab-l{gen i den formaterade texten.
Se %.TABSTOPS och %!%&)

.keep
   %.COMMANDS (cmd)

Deklarerar f|rkortade tecken-kommandon.
Eventuella tidigare f|rkortade tecken-kommandon gl|ms bort.
Ett f|rkortat tecken-kommando beh|ver inte f|reg}s av
ett utropstecken.
T% ex%: Efter %.COMMANDS %/%& kan man markera lutande stil
med %/hej%/ i st{llet f|r %!%/hej%!%/ och tabl{gen med
%& i st{llet f|r %!%&.

.keep
   %# Kommentar

En rad som b|rjar med %# ignoreras helt av SFORM.
Texten efter %# genererar ingen formaterad text
och det tolkas inte som n}got kommando.
Anv{nds f|r kommentarer i k{lltexten.

.heading 1
   Tecken-kommandon

.keep
   %% Anf|ringstecken (quote)

Talar om f|r SFORM att n{sta tecken +inte+ ska tolkas som
ett kommando, utan att det ska ing} i den formaterade
texten helt obearbetad.
Anv{nds om man t% ex vill ha en br{dg}rd (%#) eller
en punkt (%.) f|rst p} en rad, eller ett utropstecken (%!)
eller procent (%%) n}gonstans i texten.
Man skriver d} %%%#, %%%., %%%! respektive %%%% i k{lltexten.

Man kan inte anf|ra kontroll-tecken (ascii%<32).

.keep
  %- Bindestreck

Fungerar som ett vanligt tecken och ger ett bindestreck
i den formaterade texten.
Dessutom, i adjust-mode markerar det att ordet f}r avstavas
just efter bindestrecket.
Om avstavning ej f}r ske efter ett bindestreck m}ste det
anf|ras av procent (%%-). Se {ven %!%_.

.keep
   %!%_ Avstavning

Endast till}tet i adjust-mode.
Markerar att ett ord f}r avstavas.
Om ordet hamnar l{ngst ut p} en rad och {r s} l}ngt
att det n}r utanf|r h|ger_marginalen
kommer det att avstavas vid %!%_%-kommandot.
Ett bindestreck l{ggs d} till automatiskt.

.keep 5
   %!%/ Lutande stil
.space 0
   %!%+ Understrykning
.space 0
   %!%* Fet stil

Startar och stoppar typstilar.
Texten mellan tv} typstil-kommandon av samma sort kommer
att skrivas ut med angiven typstil.
T% ex, detta ord {r %!%+understruket%!%+,
och detta {r %!%*ett viktigt avsnitt%!%*.

SFORM kommer att ge felmeddelande om en typstil {r aktiv
|ver flera paragrafer. Den tror att man gl|mt st{nga av
typstilen. Om typstilen verkligen st{ngs av i en senare
paragraf kan du ignorera felutskrifterna.

(Notera att din skrivare kanske inte klarar alla typstilar.
Eventuellt kan inte heller olika typstilar
inte kan anv{ndas samtidigt.
Detta g{ller {ven neds{nkt och upph|jd stil nedan.)

.keep
   %!%~ Neds{nkt stil (index)

Startar och stoppar neds{nkt stil.
Texten mellan tv} %!%~%-kommandon skrivs lite l{gre p} raden
{n vanlig text och eventuellt med lite mindre stil.

.keep
   %!%^ Upph|jd stil (exponent)

Startar och stoppar upph|jd stil.
Texten mellan tv} %!%^%-kommandon skrivs lite h|gre p} raden
{n vanlig text och eventuellt med lite mindre stil.

(Hur neds{nkt och upph|jd text ser ut p} din skrivare beror
p} vad den har f|r m|jligheter och hur SFORM har
anpassats f|r skrivaren.)

.keep
   %!%& Tab

G} till n{sta tabulator_l{ge.
Tabulator_l{gen definieras med rad-kommandot %.TABSTOPS.
I center%-, eller right-mode kommer texten att centeras
respektive h|ger_justeras i varje kolumn.

Tabulering sker l{mpligen i left%-, center%- eller right-mode.
I adjust-mode kan %!%& anv{ndas
f|r att g|ra speciella indragningar.
T% ex:

.left
.lmarg 10
%.ADJUST
%.LMARG 10
%.PARINDENT -10
%.TABS 0
Alfa %!%&  F|rsta bokstaven i grekiska alfabetet.
K{nd sedan l{nge inom litteratur%!%_vetenskapen.

Beta %!%&  Andra bokstaven i det grekiska alfabetet.
N{stan lika k{nd som alfa,
men inte lika k{nd som omega.

.adjust
.lmarg 0
Ger:

.lmarg 20
.parindent -10
.tabs 0
Alfa !&  F|rsta bokstaven i grekiska alfabetet.
         K{nd sedan l{nge inom litteratur!_vetenskapen.

Beta !&  Andra bokstaven i det grekiska alfabetet.
         N{stan lika k{nd som alfa,
         men inte lika k{nd som omega.
.lmarg 0
.parindent 3

.keep 4
   %!%> H|gerjustera
.space 0
   %!%: Centrera

Ej till}tna i adjust-mode.
Markera att resten av raden ska vara h|ger_justerad
eller centrerad.
Om kommandot f|rekommer i en tabulerad text
kommer resten av texten fram till n{sta tab-tecken (%!%&)
att bli h|ger_justerad eller centrerad i den aktuella
tabell-kolumnen.

.keep
   %!%' Prefix

Normalt fungerar %!%' s} att efterf|ljande tecken i
k{lltexten f|rses med en accent.
T% ex "%!%'a" blir "!'a".

F|ljande +undantag+ g{ller:
.left
.lmarg 10
.tabs 8
 %!%'n !& n med tilde (spanskt n)
 %!%'N !& N med tilde
 %!%'( !& v{nster krull-parentes
 %!%') !& h|ger krull-parentes
 %!%'%< !& v{nster hak-parentes
 %!%'%> !& h|ger hak-parentes
 %!%'%! !& uppochnerv{nt utropstecken
 %!%'%? !& uppochnerv{nt fr}getecken
.lmarg 0
.adjust

(Undantagen kan vara annorlunda f|r din skrivare.)

.keep
   Mellanslag

SFORM special_behandlar mellanslag i alla moder utom exact-mode.
Multipla mellanslag i k{lltexten r{knas alltid som ett mellanslag.
Mellanslag i b|rjan p} en rad r{knas inte alls.

I adjust-mode anger mellanslag }skillnad mellan ord.
Tv} ord som delas av ett mellanslag kan eventuellt
hamna p} skilda rader i den formaterade texten.
Om man vill att tv} ord alltid ska st} intill varandra
kan man anf|ra mellanslaget med procent-tecken (%% ).
(T% ex: "T% ex" skrivs "T%%% ex".)

F|r att tvinga in multipla mellanslag i den formaterade texten
kan man anf|ra dem med procent
(T% ex% %% %% %% f|r tre mellanslag).
Kolla dock f|rst att det du vill }stadkomma
inte kan g|ras med centrering, tabulering,
indragning eller n}got annat kommando.

.heading 1
   K|rning

N{r SFORM startas fr}gar den f|rst efter k{lltexten.

Infil (.TXT)? %_

Om man inte anger n}gon filtyp antas ".TXT" som default.
Om man bara trycker %<RETURN%> kommer programmet att
l{sa k{lltexten fr}n TEDs textbuffert, f|rutsatt att
TED {r inladdad.
Man beh|ver allts} inte spara texten p} sekund{rminne
om den {r skriven i TED.

Sedan fr}gas efter om den formaterade texten ska visas
p} sk{rmen eller skrivas ut p} printer.

Sk{rm=S, Printer=P (S)? %_

Svara med "S" eller "P".
Bara %<RETURN%> ger sk{rmen.
Sk{rmen kan inte visa alla typstilar och format_kommandon.
En halv radmatning visas som ett bindestreck (-).
Start och stopp av diverse typstilar visas med
fyllda fyrkanter.
Ny sida visas med vertikalt streck.

.heading .1
    Paus

Man kan tempor{rt stoppa k|rningen av SFORM
genom att trycka p} valfri tangent.
Tryck p} tangenten en g}ng till s} }terupptas k|rningen.

.heading 1
   Felmeddelanden

.tabs 0
.lmarg 15
.parindent -15
TED ej laddad !&
   Du har svarat bara %<RETURN%> som infil
   och TED {r inte laddad,
   eller TED har inte sin textbuffert
   d{r variabeln B0%% anger.

ERR 21 !&
   "Hittar ej filen".
   Antagligen felaktigt filnamn f|r infilen.

ERR <felkod> !&
   \vriga fel som kan intr{ffa vid l{sning av infilen.

<radnr> *** <textrad>
.space 0
<radnr> *** ERROR <feltext>
.space 0
.indent 0
   P} rad nummer <radnr> i k{lltexten finns ett formellt fel.

<radnr> *** ERROR %!%<tecken-kommando%>
.space 0
.indent 0
   Ok{nt tecken-kommando, eller otill}tet i aktuell mode.

<radnr> *** ERROR Unknown cmd
.space 0
.indent 0
   Ok{nt rad-kommando, eller f|rkortat till mindre {n fyra tecken.

<radnr> *** ERROR Cmd parameter
.space 0
.indent 0
   F|r f}, f|r m}nga eller otill}tna v{rden p}
   argumenten till ett rad-kommando.

<radnr> *** ERROR Overflow
.space 0
.indent 0
   En textrad i den formaterade texten {r s} l}ng
   att det |verskrider h|ger_mariginalen med mer
   {n ett f}tal tecken.

<radnr> *** ERROR Unmatch attr.
.space 0
.indent 0
   En typstil (%!%/,%!%+,%!%*,%!%^ eller %!%~)
   {r aktiv under ett paragraf_mellanrum eller vid filslut.
   Kan betyda att du gl|mt st{nga av en typstil.
   Ignorera detta om du medvetet l}ter en typstilen vara
   aktiv |ver flera paragrafer.
.lmarg 0
.parindent 3

.heading 1
   Anpassningar

SFORM {r fr}n b|rjan anpassad f|r skrivare FACIT 4511.
Om TED ocks} {r inladdad f|ruts{tts 32 Kbyte RAM
och att TED {r initierad s} att 7% Kbyte minne
{r ledigt f|r Basic-program.

F|r att anpassa TED b|r du ha en version d{r
TEDSTART.MRG {r inmergead.
[ndra i den s} att TED l{mnar 7% Kbyte ledigt
minne genom att s{tta variabeln P5%%=7168%%.

SFORM f|ruts{tter att TED lagrar text
med b|rjan p} adress 38058.
Om det inte st{mmer f|r din version av TED
s} {ndra variabeln B0%% p} rad 280 i SFORM.

Vill du modifiera SFORM f|r att passa andra skrivare
{n FACIT 4511 se filen SFORM.ANP.

.heading .1
   Anv{ndning utan anpassning

[ven om SFORM inte {r anpassad f|r just din skrivare
s} kan du anv{nda programmet om du {r f|rsiktig med
vilka funktioner du anv{nder.

Man kan anv{nda SFORM med i stort sett
vilken skrivare som helst om man i k{lltexten
undviker kommandon som {ndrar tecken_upps{ttning
eller stil samt att man bara anger hela radavst}nd
i radavst}nds-kommandon.
Prefix kommandot %!%' b|r anv{ndas med f|rsiktighet.
De undantag som angetts f|r %!%' ska undvikas.
