-
Notifications
You must be signed in to change notification settings - Fork 1
/
magitex.tex
1224 lines (1152 loc) · 53.8 KB
/
magitex.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% ATRIBUIÇÃO DE CÓDIGOS À CARACTERES %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Nossos códigos de categoria são iguais aos do Plain TeX, exceto por
% não suportarmos os caracteres ASCII de seta para cima e para baixo
% como sobrescrito e subscrito. Atualmente não há teclados com tais
% símbolos sendo encontrados por aí.
\catcode`\{=1
\catcode`\}=2
\catcode`\$=3
\catcode`\&=4
\catcode`\#=6
\catcode`\^=7
\catcode`\_=8
\catcode`\^^I=10
\catcode`\~=13
% Assim como na definição do Plain TeX, vamos reservar o @ para atuar
% temporariamente como letra e assim podermos reservar comandos
% privados que terão '@' no nome e que não poderão ser geralmente
% sobrescritos ou usados por um usuário. Depois faremos com que o @
% volte a ser uma marca de pontuação.
\catcode`@=11
% O seguinte catcode nos ajuda a interpretar caracteres UTF-8:
\catcode`\^^c3=13
\catcode`\^^c2=13
% Usamos as mesmas configurações do fator de espaço que o Plain TeX. O
% espaço após o ')' é igual ao espaço do que vem antes dele, e o mesmo
% ocorre com aspas e fechamento de colchetes. Adotamos por padrão as
% convenções do \nonfrenchspacing
\sfcode`\)=0 \sfcode`\'=0 \sfcode`\]=0 \sfcode`\.3000 \sfcode`\?3000
\sfcode`\!3000 \sfcode`\:2000 \sfcode`\;1500 \sfcode`\,1250
% O Plain TeX não faz modificações na tabela padrão de conversão de
% caracteres maiúsculos e minúsculos. Mas aqui é necessário
% adicionarmos novos itens à tabela para que possamos converter para
% maiúscula e minúscula os caracteres UTF-8 que representam letras
% acentuadas. Todos eles começam com o byte ^^c3 de prefixo que nunca
% muda. O caractere seguinte define qual caractere unicode ele é.
\lccode`^^c3=`^^c3\uccode`^^c3=`^^c3 % Prefixo
\lccode`^^80=`^^a0\uccode`^^a0=`^^80\lccode`^^a0=`^^a0\uccode`^^80=`^^80 % À - à
\lccode`^^81=`^^a1\uccode`^^a1=`^^81\lccode`^^a1=`^^a1\uccode`^^81=`^^81 % Á - á
\lccode`^^82=`^^a2\uccode`^^a2=`^^82\lccode`^^a2=`^^a2\uccode`^^82=`^^82 % Â - â
\lccode`^^83=`^^a3\uccode`^^a3=`^^83\lccode`^^a3=`^^a3\uccode`^^83=`^^83 % Ã - ã
\lccode`^^84=`^^a4\uccode`^^a4=`^^84\lccode`^^a4=`^^a4\uccode`^^84=`^^84 % Ä - ä
\lccode`^^85=`^^a5\uccode`^^a5=`^^85\lccode`^^a5=`^^a5\uccode`^^85=`^^85 % AA-aa
\lccode`^^86=`^^a6\uccode`^^a6=`^^86\lccode`^^a6=`^^a6\uccode`^^86=`^^86 % AE-ae
\lccode`^^87=`^^a7\uccode`^^a7=`^^87\lccode`^^a7=`^^a7\uccode`^^87=`^^87 % Ç - ç
\lccode`^^88=`^^a8\uccode`^^a8=`^^88\lccode`^^a8=`^^a8\uccode`^^88=`^^88 % È - è
\lccode`^^89=`^^a9\uccode`^^a9=`^^89\lccode`^^a9=`^^a9\uccode`^^89=`^^89 % É - é
\lccode`^^8a=`^^aa\uccode`^^aa=`^^8a\lccode`^^aa=`^^aa\uccode`^^8a=`^^8a % Ê - ê
\lccode`^^8b=`^^ab\uccode`^^ab=`^^8b\lccode`^^ab=`^^ab\uccode`^^8b=`^^8b % Ë - ë
\lccode`^^8c=`^^ac\uccode`^^ac=`^^8c\lccode`^^ac=`^^ac\uccode`^^8c=`^^8c % Ì - ì
\lccode`^^8d=`^^ad\uccode`^^ad=`^^8d\lccode`^^ad=`^^ad\uccode`^^8d=`^^8d % Í - í
\lccode`^^8e=`^^ae\uccode`^^ae=`^^8e\lccode`^^ae=`^^ae\uccode`^^8e=`^^8e % Î - î
\lccode`^^8f=`^^af\uccode`^^af=`^^8f\lccode`^^af=`^^af\uccode`^^8f=`^^8f % Ï - ï
\lccode`^^91=`^^b1\uccode`^^b1=`^^91\lccode`^^b1=`^^b1\uccode`^^91=`^^91 % Ñ - ñ
\lccode`^^92=`^^b2\uccode`^^b2=`^^92\lccode`^^b2=`^^b2\uccode`^^92=`^^92 % Ò - ò
\lccode`^^93=`^^b3\uccode`^^b3=`^^93\lccode`^^b3=`^^b3\uccode`^^93=`^^93 % Ó - ó
\lccode`^^94=`^^b4\uccode`^^b4=`^^94\lccode`^^b4=`^^b4\uccode`^^94=`^^94 % Ô - ô
\lccode`^^95=`^^b5\uccode`^^b5=`^^95\lccode`^^b5=`^^b5\uccode`^^95=`^^95 % Õ - õ
\lccode`^^96=`^^b6\uccode`^^b6=`^^96\lccode`^^b6=`^^b6\uccode`^^96=`^^96 % Ö - ö
\lccode`^^98=`^^b8\uccode`^^b8=`^^98\lccode`^^b8=`^^b8\uccode`^^98=`^^98 % /O-/o
\lccode`^^99=`^^b9\uccode`^^b9=`^^99\lccode`^^b9=`^^b9\uccode`^^99=`^^99 % Ù - ù
\lccode`^^9a=`^^ba\uccode`^^ba=`^^9a\lccode`^^ba=`^^ba\uccode`^^9a=`^^9a % Ú - ú
\lccode`^^9b=`^^bb\uccode`^^bb=`^^9b\lccode`^^bb=`^^bb\uccode`^^9b=`^^9b % Û - û
\lccode`^^9c=`^^bc\uccode`^^bc=`^^9c\lccode`^^bc=`^^bc\uccode`^^9c=`^^9c % Ü - ü
\lccode`^^9d=`^^bd\uccode`^^bd=`^^9d\lccode`^^bd=`^^bd\uccode`^^9d=`^^9d % Ý - ý
%\lccode`-=`-
% Os códigos dos caracteres matemáticos não serão modificados. Como o
% modo matemático do TeX e LaTeX são em si mesmo uma linguagem própria
% já muito difundida, não pretendendo realizar nenhuma mudança nem
% aqui e nem em nenhum outro lugar referente ao modo matemático. Os
% caracteres definidos terão o mesmo código do Apêndice C do
% Texbook. Tal \mathcode é usado para definir o comportamento da
% tipografia de tais símbolos, a sua fonte e sua posição
% específica. Alguns caracteres como ' também passam a ser
% considerados caracteres especiais.
\mathcode`\^^@="2201 % \cdot
\mathcode`\^^A="3223 % \downarrow
\mathcode`\^^B="010B % \alpha
\mathcode`\^^C="010C % \beta
\mathcode`\^^D="225E % \land
\mathcode`\^^E="023A % \lnot
\mathcode`\^^F="3232 % \in
\mathcode`\^^G="0119 % \pi
\mathcode`\^^H="0115 % \lambda
\mathcode`\^^I="010D % \gamma
\mathcode`\^^J="010E % \delta
\mathcode`\^^K="3222 % \uparrow
\mathcode`\^^L="2206 % \pm
\mathcode`\^^M="2208 % \oplus
\mathcode`\^^N="0231 % \infty
\mathcode`\^^O="0140 % \partial
\mathcode`\^^P="321A % \subset
\mathcode`\^^Q="321B % \supset
\mathcode`\^^R="225C % \cap
\mathcode`\^^S="225B % \cup
\mathcode`\^^T="0238 % \forall
\mathcode`\^^U="0239 % \exists
\mathcode`\^^V="220A % \otimes
\mathcode`\^^W="3224 % \leftrightarrow
\mathcode`\^^X="3220 % \leftarrow
\mathcode`\^^Y="3221 % \rightarrow
\mathcode`\^^Z="8000 % \ne
\mathcode`\^^[="2205 % \diamond
\mathcode`\^^\="3214 % \le
\mathcode`\^^]="3215 % \ge
\mathcode`\^^^="3211 % \equiv
\mathcode`\^^_="225F % \lor
\mathcode`\ ="8000 % \space
\mathcode`\!="5021
\mathcode`\'="8000 % ^\prime
\mathcode`\(="4028
\mathcode`\)="5029
\mathcode`\*="2203 % \ast
\mathcode`\+="202B
\mathcode`\,="613B
\mathcode`\-="2200
\mathcode`\.="013A
\mathcode`\/="013D
\mathcode`\:="303A
\mathcode`\;="603B
\mathcode`\<="313C
\mathcode`\=="303D
\mathcode`\>="313E
\mathcode`\?="503F
\mathcode`\[="405B
\mathcode`\\="026E % \backslash
\mathcode`\]="505D
\mathcode`\_="8000 % \_
\mathcode`\{="4266
\mathcode`\|="026A
\mathcode`\}="5267
\mathcode`\^^?="1273 % \smallint
% Assim como Plain TeX, usamos exatamente as mesmas escolhas de
% caracteres como delimitadores em modo matemático. Tem também
% o \delcode'.=0 que já está implícito pelo INITEX:
\delcode`\(="028300
\delcode`\)="029301
\delcode`\[="05B302
\delcode`\]="05D303
\delcode`\<="26830A
\delcode`\>="26930B
\delcode`\/="02F30E
\delcode`\|="26A30C
\delcode`\\="26E30F
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% ATRIBUIÇÃO DE PARÂMETROS INTERNOS %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Parâmetros inteiros
\pretolerance=100 % Tolerância da 1a tentativa de gerar parágrafo sem \-
\tolerance=200 % Tolerância final de parágrafos.
\hbadness=1000 % Badness com valor tão alto sempre é reportada
\vbadness=1000 % Idem, mas no modo vertical
\linepenalty=10 % Ampliar isso reduz o número de linhas
\hyphenpenalty=50 % Penalidade de separação silábica na quebra de linha
\exhyphenpenalty=50 % Idem, mas no caso em que a palavra muda na quebra
\binoppenalty=700 % Dificuldade de quebra de linha após operadores matemáticos
\relpenalty=500 % Idem, mas após operadores de relação como >
\clubpenalty=150 % Penalidade de quebra de página após 1a linha de parágrafo
\widowpenalty=150 % Idem, mas antes da última linha de parágrafo
\displaywidowpenalty=50 % Penalidade da penúltima linha antes de display
\brokenpenalty=100 % Penalidade vertical de separação silábica na
% penúltima linha
\predisplaypenalty=10000 % Penalidade de quebra antes de equações em
% display
\postdisplaypenalty=0 % Penalidade após um display matemático
\interlinepenalty=0 % Penalidade de quebra de página entre linhas
% comuns
\floatingpenalty=0 % Este valor é mudado em cada inserção
\outputpenalty=0 % E este é ajustado em cada saída.
\doublehyphendemerits=10000 % Deméritos adicionados se duas linhas
% seguidas separam sílabas
\finalhyphendemerits=5000 % Deméritos adicionais se penúltima linha
% separa sílabas
\adjdemerits=10000 % Deméritos adicionais se duas linhas seguidas são
% visualmente incompatíveis
\looseness=0 % Ajustado para 0 depois de cada parágrafo. Tenta tornar
% o parágrafo atual o seu valor mais longo em número de
% linhas.
\pausing=0 % Se precisamos pausar após ler cada linha de arquivo
\holdinginserts=0 % Se maior que 0, as inserções feitas são
% permanentes em cada página
\tracingonline=0 % Se positivo, mensagens de depuração vão pro terminal
\tracingmacros=0 % Se positivo, gera mensagem de depuração de macros
\tracingstats=0 % Se positivo, gera depuração de quanta memória é usada
\tracingparagraphs=0 % Se positivo, mostra depuração sobre tentativas
% de gerar parágrafo
\tracingpages=0 % Se positivo, mostra depuração sobre tentativas de
% quebrar página
\tracingoutput=0 % Se positivo, gera depuração da caixa que vai pra \output
\tracinglostchars=1 % Se positivo, gera avisos sobre caracteres não
% encontrados na fonte atual
\tracingcommands=0 % Se positivo, mostra os comandos que vão sendo
% executados
\tracingrestores=0 % Se positivo, mostra todas as variáveis que tem
% seus valores restaurados no fim de um agrupamento
\language=0 % A linguagem usada.
\uchyph=1 % Positivo se deve-se separar silabicamente palavras que
% começam com letras maiúsculas
\lefthyphenmin=0 % Menor fragmento esquerdo de palavras com separação
% silábica.
\righthyphenmin=0 % Idem, mas para fragmento direito
\globaldefs=0 % Não-nulo para tornar toda atribuição \global
\maxdeadcycles=25 % Número máximo de loops de geração de páginas sem
% que nenhuma página seja gerada
\hangafter=1 % Define que as linhas em que haverá
% identação \hangindent serão as linhas 2, 3, 4, ...
\fam=0 % Fonte padrão de modo matemático
\mag=1000 % Ampliação inicial
\escapechar=`\\ % Caractere de escape
\defaultskewchar=-1
\endlinechar=`\^^M % Caractere de fim de linha
\newlinechar=-1
\delimiterfactor=901 % Para escolher tamanho de delimitadores grandes
% em modo matemático
%\time=now % TeX deve atribuir isso automaticamente
%\day=now % TeX deve atribuir isso automaticamente
%\month=now % TeX deve atribuir isso automaticamente
%\year=now % TeX deve atribuir isso automaticamente
\showboxbreadth=5 % Número máximo de itens exibidos quando caixas são
% mostradas
\showboxdepth=3 % Nível máximo quando caixas são mostradas
\errorcontextlines=3 % Contexto extra máximo mostrado quando erros são
% mostrados
% Parâmetros de dimensões:
\hfuzz=0.1pt % Tolerância à caixas superlotadas em modo horizontal
\vfuzz=0.1pt % Idem no modo vertical
\overfullrule=5pt % Largura das réguas adicionadas à caixas superlotadas
\hsize=15cm % Tamanho das linhas (deixamos margem de 3cm)
\vsize=23,7cm % Altura de todas as linhas de uma página (margem de 3 cm)
\maxdepth=4pt % profundidade máxima em páginas principais
\splitmaxdepth=16383.99999pt % Idem em páginas quebradas (tamanho máximo)
\boxmaxdepth=16383.99999pt % Idem em páginas explícitas (tamanho máximo)
\lineskiplimit=0pt % Distância limítrofe entre duas linhas
\delimitershortfall=5pt % Espaço máximo não coberto por um delimitador
\nulldelimiterspace=1.2pt % Largura de um delimitador nulo
\scriptspace=0.5pt % Espaço extra após sobrescritos e subscritos
\mathsurround=0pt % Espaço antes e depois de modo matemático
\predisplaysize=0pt % Largura de texto precedendo um display,
% preenchido automaticamente
\displaywidth=0pt % Altura de texto precedendo o display, preenchido
% automaticamente
\displayindent=0pt % Identação de linha de display, preenchido
% automaticamente
\parindent=20pt % Identação de parágrafo
\hangindent=0pt % Identação pendente, zerada após cada parágrafo
\hoffset=0,459994cm % Deslocamento horizontal de texto da página (para
% dar 3cm)
\voffset=0,459994cm % Deslocamento vertical de texto na página (para
% dar 3cm)
% Parâmetros de cola:
\baselineskip=12pt % Distância ideal entre linhas
\lineskip=1pt % Distância garantida entre linhas em distância
% limítrofe
\parskip=0pt plus 1pt % Cola entre parágrafos
\abovedisplayskip=12pt plus 3pt minus 9pt % Cola antes de displays
\abovedisplayshortskip=0pt plus 3pt % Idem, mas após linhas curtas
\belowdisplayskip=12pt plus 3pt minus 9pt % Cola após displays
\belowdisplayshortskip=7pt plus 3pt minus 4pt % Idem, mas antes de
% linha curta
\leftskip=0pt % Cola à esquerda de linhas justificadas
\rightskip=0pt % Cola à direita de linhas justificadas
\topskip=10pt % Cola no topo de páginas
\splittopskip=10pt % Cola no topo de páginas quebradas
\tabskip=0pt % Cola entre &
\spaceskip=0pt % Cola entre palavras, se não-nulo
\xspaceskip=0pt % Cola entre frases, se não-nulo.
\parfillskip=0pt plus 1fil % Cola à direita adicional na última linha
% de parágrafos
% Parâmetros de cola mu:
\thinmuskip=3mu % Espaço pequeno em fórmulas matemáticas
\medmuskip=4mu plus 2mu minus 4mu % Espaço médio em fórmulas matemáticas
\thickmuskip=5mu plus 5mu % Espaço grande em fórmulas matemáticas
% Parâmetros de lista de tokens:
\everypar{} % A ser executado em cada parágrafo
\everymath{} % A ser executado em cada modo matemático
\everydisplay{} % A ser executado em cada display
\everyhbox{} % A ser executado em cada hbox
\everyjob{} % A ser executado no preâmbulo de cada trabalho
\everycr{} % A ser executado em cada \cr ou \crcr não-ignorado
\errhelp{} % A ser executado após erros
%%%%%%%%%%%%%%%%%%%%%%%%%%%% ROTINA DE SAÍDA %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\output{\shipout\vbox{\vbox to 0pt{\vskip-22.5pt
\hbox to\hsize{% Início da headline
\vbox to 8.5pt{}\the\headline}\vss}\prevdepth-1000pt%
% Corpo:
\vbox to\vsize{\boxmaxdepth\maxdepth
\dimen0=\dp255 \unvbox255 % open up \box255
\ifvoid\footins@\else % footnote info is present
\vskip12pt plus 4pt minus 4pt%
\kern-3pt\hrule width 2truein \kern 2.6pt % footnoterule
{\unvbox\footins@}\fi}%
% Rodapé:
{\baselineskip24pt\lineskiplimit0pt\hbox to\hsize{\the\footline}}}%
% Lógica do número de página
\ifnum\pageno@<0 \global\advance\pageno@ by -1
\else\global\advance\pageno@ by 1 \fi
\ifnum\outputpenalty>-20000 \else%
% Supereject:
\ifnum\insertpenalties>0 % something is being held over
\hbox to\hsize{}\kern-\topskip\naoquebra\vfill\par\penalty-20000\fi%
\fi}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% REGISTRADORES %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% magitex assume que registradores devem ser tratados apenas por
% escritores de formato e pessoas que sabem bem o que estão fazendo. E
% que cada formato deve documentar quais registradores usa. Comandos
% do Plain TeX como \newcount podem ser abusados e podem exaurir o
% espaço de registradores. Então será proposital não
% declararmos \newcount, \newskip e outros comandos para dar nomes à
% registradores sem especificar os números.
% Os registradores de contagem de 0 à 9 são reservados. O 0 é o número
% da página. O registrador 254 também é usado para o fator do quando
% cada linha da inserção \footins@ afeta o espaço da página. Os demais
% só são usados em formatos que de alguma forma precisam numerar
% sub-páginas e não serão usados. Depois deles nós temos:
\countdef\pageno@=0 \pageno@=0 % O número de página
\countdef\count@=10
\countdef\rodapenum@=11 \rodapenum@=0 % Contagem de rodapé
% 254 reservado para \footins
\count254=1000 % Fator de ampliação do rodapé
% Não há nenhum registrador de dimensão alocado pelas primitivas
% TeX. Desta forma, temos todos à nossa disposição:
\dimendef\p@renwd=0
\dimendef\dimen@=1
\dimendef\dimen@i=2
\dimendef\dimen@ii=3
\dimendef\epsfrsize@=4
\dimendef\pspoints@=5
\dimendef\epsftsize@=6
\dimendef\epsfxsize@=7 % horizontal size after scaling
\dimendef\epsfysize@=8 % vertical size after scaling
\dimendef\epsftmp@=9
\dimen254=8in
% Os registradores de skip.
\skip254=12pt plus 4pt minus 4pt % Espaço adicionado quando rodapé
% está presente
% Nenhum registrador de muskip é usado
% Registradores de caixa estão todos à disposição, exceto o de número
% 255:
\def\voidb@x{10} % permanently void box register
\def\strutbox{11} \setbox\strutbox=\hbox{\vrule height8.5pt depth3.5pt
width0pt}
\def\tabs{12}
\def\tabsyet{13}
\def\tabsdone{14}
\def\rootbox{15}
\def\footins@{254} % Rodapé
% Agora reservamos os registradores de sequências de tokens:
\toksdef\headline=0
\headline={\hfil} % Cabeçalho padrão em branco
\toksdef\footline=1
\footline={\hss\tenrm@\special{color push rgb 0 0 0}\ifnum\pageno@<0
\romannumeral-\pageno@ \else\number\pageno@ \fi%
\special{color pop}\hss} % Rodapé padrão
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% ATRIBUIÇÕES %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Começamos com as sequências de controle que também são padrão no
% Plain TeX:
\def~{\penalty10000 \ }
% Útil em algumas construções
\let\bgroup={ \let\egroup=}
% Para momentos de emergência, quando queremos que uma palavra como
% beija-flor que possui um hífen seja separada em sílabas
% automaticamente, podemos escrever beija\=flor:
\def\={\hskip0pt-\penalty0\hskip0pt\relax}
% Código para suportar os caracteres Computer Modern na fonte
% UTF-8. Primeiro fazemos com que ^^c3 passe a ser um caractere ativo
% que passa a se comportar como um comando (tal como o ~). Este
% caractere é o prefixo de tudo quanto é letra acentuada e Cs com
% cedilhas. Em seguida, definimos o ``comando'' ^^c3 para olhar pelo
% caractere seguinte e, baseado nele, inserir o caractere adequado.
\def\cedilha@#1{{\setbox0\hbox{#1}\ifdim\ht0=1ex\accent24 #1%
\else\lineskiplimit-16383.99999pt
\vtop{\baselineskip0pt plus0pt minus0pt \lineskip.25ex%
\everycr{}\tabskip0pt plus0pt minus0pt\halign{##\crcr\unhbox0\crcr\hskip-1000pt
plus 1fill\char24\hskip-1000pt plus 1fill\crcr}}\fi}}
\def\utf@#1{\ifmmode{\hbox{\tenrm@#1}}\else{#1}\fi}
\def\ensuremath@#1{\ifmmode#1\else$#1$\fi}
\def^^c2#1{\relax% Família a: ¤ ¥ ¦ § ¨ © ª « ¬ ® ¯
\ifx#1^^a0~%
\else\ifx#1^^a1\utf@{\char'74}% ¡
\else\ifx#1^^a2{\hbox to 0pt{c\hss}\kern0.465ex\lower0.1em%
\hbox{\vrule height 1.5ex width 0.5pt}\kern0.45ex}% ¢
\else\ifx#1^^a3\utf@{{\tenit@ \char'44}}% £
\else\ifx#1^^b0\ensuremath@{^{\hbox{\sevenrm@ o}}}% °
\else\ifx#1^^b1\ensuremath@{\pm}% ±
\else\ifx#1^^b2\ensuremath@{^2}% ²
\else\ifx#1^^b3\ensuremath@{^3}% ³
\else\ifx#1^^b4\utf@{\'\hskip-0.4em}% ´
\else\ifx#1^^b5\ensuremath@{\mathchar"0116}% µ (b5)´
\else\ifx#1^^b6\ensuremath@{\mathchar"027B}% ¶
\else\ifx#1^^b7\ensuremath@{\cdot}% ·
\else\ifx#1^^b8{\cedilha@\ }% ¸ (b8)
\else\ifx#1^^b9\ensuremath@{^1}% ¹ (b9)
\else\ifx#1^^ba\ensuremath@{^0}% º (ba)
\else\ifx#1^^bb\ensuremath@{\mathchar"521D}% » (bb)
\else\ifx#1^^bc\ensuremath@{1 \over 4}% ¼
\else\ifx#1^^bd\ensuremath@{1 \over 2}% ½
\else\ifx#1^^be\ensuremath@{3 \over 4}% ¾
\else\ifx#1^^bf\utf@{\char'76}% ¿
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
\def^^c3#1{\relax% Este \relax é para evitar bugs se usado em \halign
% (TeXbook)
\ifx#1^^80\ifmmode{\hbox{\tenit@\accent18A}}\else{\accent18A}\fi% À
\else\ifx#1^^81\ifmmode{\acute A}\else{\accent19A}\fi% Á c1
\else\ifx#1^^82\ifmmode{\hat A}\else{\accent94A}\fi% Â
\else\ifx#1^^83\ifmmode{\tilde A}\else{\accent"7E A}\fi% Ã
\else\ifx#1^^84\ifmmode{\ddot A}\else{\accent"7F A}\fi% Ä
\else\ifx#1^^85\ifmmode{\hbox{\tenit@\AA}}\else{\AA}\fi
\else\ifx#1^^86\ifmmode{\hbox{\tenit@\char"1D}}\else\char"1D\fi
\else\ifx#1^^87\ifmmode\hbox{\tenit@\cedilha@ C}\else\cedilha@ C{}\fi %ç
\else\ifx#1^^88\ifmmode\hbox{\accent18E}\else{\accent18E}\fi%
\else\ifx#1^^89\ifmmode{\acute E}\else{\accent19E}\fi% É
\else\ifx#1^^8a\ifmmode{\hat E}\else{\accent94E}\fi% Ê
\else\ifx#1^^8b\ifmmode{\ddot E}\else{\accent"7FE}\fi% Ë
\else\ifx#1^^8c\ifmmode\hbox{\tenit@\accent18I}\else{\accent18I}\fi% Ì
\else\ifx#1^^8d\ifmmode{\acute I}\else{\accent19I}\fi% Í
\else\ifx#1^^8e\ifmmode{\hat I}\else{\accent94I}\fi% Î
\else\ifx#1^^8f\ifmmode{\ddot I}\else{\accent"7FI}\fi% Ï
% Falta o Ð
\else\ifx#1^^91\ifmmode{\tilde N}\else{\accent"7EN}\fi% Ñ
\else\ifx#1^^92\ifmmode\hbox{\tenit@\accent18O}\else{\accent18O}\fi% Ò
\else\ifx#1^^93\ifmmode{\acute O}\else{\accent19O}\fi% Ó
\else\ifx#1^^94\ifmmode{\hat O}\else{\accent94O}\fi% Ô
\else\ifx#1^^95\ifmmode{\tilde O}\else{\accent"7EO}\fi% Õ
\else\ifx#1^^96\ifmmode{\ddot O}\else{\accent"7FO}\fi% Ö
% Falta o ×
\else\ifx#1^^98\ifmmode\hbox{\tenit@\char"1F}\else\char"1F\fi% \O
\else\ifx#1^^99\ifmmode\hbox{\tenit@\accent18U}\else{\accent18U}\fi% Ù
\else\ifx#1^^9a\ifmmode{\acute U}\else{\accent19U}\fi% Ú
\else\ifx#1^^9b\ifmmode{\hat U}\else{\accent94U}\fi% Û
\else\ifx#1^^9c\ifmmode{\ddot U}\else{\accent"7FU}\fi% Ü
\else\ifx#1^^9d\ifmmode{\acute Y}\else{\accent19Y}\fi% Ý
% Faltam Þ e ß
\else\ifx#1^^a0\ifmmode\hbox{\tenit@\accent18a}\else{\accent18a}\fi% à
\else\ifx#1^^a1\ifmmode{\acute a}\else{\accent19a}\fi% á
\else\ifx#1^^a2\ifmmode{\hat a}\else{\accent94a}\fi% â
\else\ifx#1^^a3\ifmmode{\tilde a}\else{\accent"7Ea}\fi% ã
\else\ifx#1^^a4\ifmmode{\ddot a}\else{\accent"7Fa}\fi% ä
\else\ifx#1^^a5\ifmmode\hbot{\tenit@\aa}\else\aa{}\fi
\else\ifx#1^^a6\ifmmode\hbox{\tenit@\char"1A}\else\char"1A\fi%
\else\ifx#1^^a7\ifmmode\hbox{\tenit@\cedilha@ c}\else\cedilha@ c\fi
\else\ifx#1^^a8\ifmmode\hbox{\tenit@\accent18e}\else{\accent18e}\fi% è
\else\ifx#1^^a9\ifmmode{\acute e}\else{\accent19e}\fi% é
\else\ifx#1^^aa\ifmmode{\hat e}\else{\accent94e}\fi% ê
\else\ifx#1^^ab\ifmmode{\ddot e}\else{\accent"7Fe}\fi% ë
\else\ifx#1^^ac\ifmmode\hbox{\tenit@\accent18\char"10}\else{\accent18\char"10}\fi% ì
\else\ifx#1^^ad\ifmmode\hbox{\tenit@\accent19\char"10}\else{\accent19\char"10}\fi% í
\else\ifx#1^^ae\ifmmode\hbox{\tenit@\accent94\char"10}\else{\accent94\char"10}\fi% î
\else\ifx#1^^af\ifmmode\hbox{\tenit@\accent"7F\char"10}\else{\accent"7F\char"10}\fi% ï
% Falta o ð
\else\ifx#1^^b1\ifmmode{\tilde n}\else{\accent"7En}\fi% ñ
\else\ifx#1^^b2\ifmmode\hbox{\tenit@\accent18o}\else{\accent18o}\fi% ò
\else\ifx#1^^b3\ifmmode{\acute o}\else{\accent19o}\fi% ó
\else\ifx#1^^b4\ifmmode{\hat o}\else{\accent94o}\fi% ô
\else\ifx#1^^b5\ifmmode{\tilde o}\else{\accent"7Eo}\fi% õ
\else\ifx#1^^b6\ifmmode{\ddot o}\else{\accent"7Fo}\fi% ö
\else\ifx#1^^b8\ifmmode\hbox{\tenit@\char"1C}\else\char"1C\fi% \o
\else\ifx#1^^b9\ifmmode\hbox{\tenit@\accent18u}\else{\accent18u}\fi% ù
\else\ifx#1^^ba\ifmmode{\acute u}\else{\accent19u}\fi% ú
\else\ifx#1^^bb\ifmmode{\hat u}\else{\accent94u}\fi% û
\else\ifx#1^^bc\ifmmode{\ddot u}\else{\accent"7Fu}\fi% ü
\else\ifx#1^^bd\ifmmode{\acute y}\else{\accent19y}\fi% ý
% Falta o þ
\else\ifx#1^^bf\ifmmode{\ddot y}\else{\accent"7FY}\fi% ÿ
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
% Código que passa os padrões de separação silábica da língua
% portuguesa:
%\patterns{1ba1 1be1 1bi1 1bo1 1bu1 1ca1 1ce1 1ci1 1co1 1cu1
% 1da1 1de1 1di1 1do1 1du1 1fa1 1fe1 1fi1 1fo1 1fu1
% 1ga1 1ge1 1gi1 1go1 1gu1 1ha1 1he1 1hi1 1ho1 1hu1
% 1ja1 1je1 1ji1 1jo1 1ju1 1ka1 1ke1 1ki1 1ko1 1ku1
% 1la1 1le1 1li1 1lo1 1lu1 1ma1 1me1 1mi1 1mo1 1mu1
% 1na1 1ne1 1ni1 1no1 1nu1 1pa1 1pe1 1pi1 1po1 1pu1
% 1qua1 1que1 1qui1 1quo1 1ra1 1re1 1ri1 1ro1 1ru1
% 1sa1 1se1 1si1 1so1 1su1 1ta1 1te1 1ti1 1to1 1tu1
% 1va1 1ve1 1vi1 1vo1 1vu1 1wa1 1we1 1wi1 1wo1 1wu1
% 1xa1 1xe1 1xi1 1xo1 1xu1 1za1 1ze1 1zi1 1zo1 1zu1
% 2n3t2 3v2o2u2 2n3v2 2l3v2 3d2e2i3 3r2a2i2s3 3-3}
\patterns{1b2l 1b2r 1ba 1be 1bi 1bo 1bu 1c2h 1c2l 1c2r 1ca 1ce 1ci 1co 1cu
1d2l 1d2r 1da 1de 1di 1do 1du 1f2l 1f2r 1fa 1fe 1fi 1fo 1fu 1g2l 1g2r
1ga 1ge 1gi 1go 1gu 1gu4a 1gu4e 1gu4i 1gu4o 1ja 1je 1ji 1jo 1ju 1k2l
1k2r 1ka 1ke 1ki 1ko 1ku 1l2h 1la 1le 1li 1lo 1lu 1ma 1me 1mi 1mo 1mu
1n2h 1na 1ne 1ni 1no 1nu 1p2l 1p2r 1pa 1pe 1pi 1po 1pu 1qu4a 1qu4e
1qu4i 1qu4o 1ra 1re 1ri 1ro 1ru 1sa 1se 1si 1so 1su 1t2l 1t2r 1ta 1te
1ti 1to 1tu 1v2l 1v2r 1va 1ve 1vi 1vo 1vu 1w2l 1w2r 1xa 1xe 1xi 1xo
1xu 1za 1ze 1zi 1zo 1zu a3a a3e a3o c3c e3a e3e e3o i3a i3e i3i
i3o o3a o3e o3o r3r s3s u3a u3e u3o u3u}
% 1- 1bá 1bâ 1bã 1bé 1bí 1bó 1bú 1bê 1bõ 1cá 1câ 1cã 1cé 1cí 1có 1cú 1cê
%1cõ 1ça 1çe 1çi 1ço 1çu 1çá 1çâ 1çã 1çé 1çí 1çó 1çú 1çê 1çõ 1dá 1dâ
%1dã 1dé 1dí 1dó 1dú 1dê 1dõ 1fá 1fâ 1fã 1fé 1fí 1fó 1fú 1fê 1fõ 1gá
%1gâ 1gã 1gé 1gí 1gó 1gú 1gê 1gõ 1já 1jâ 1jã 1jé 1jí 1jó 1jú 1jê 1jõ
%1ká 1kâ 1kã 1ké 1kí 1kó 1kú 1kê 1kõ 1lá 1lâ 1lã 1lé 1lí 1ló 1lú 1lê
%1lõ 1má 1mâ 1mã 1mé 1mí 1mó 1mú 1mê 1mõ 1ná 1nâ 1nã 1né 1ní 1nó 1nú
%1nê 1nõ 1pá 1pâ 1pã 1pé 1pí 1pó 1pú 1pê 1põ 1rá 1râ 1rã 1ré 1rí 1ró
%1rú 1rê 1rõ 1sá 1sâ 1sã 1sé 1sí 1só 1sú 1sê 1sõ 1tá 1tâ 1tã 1té 1tí
%1tó 1tú 1tê 1tõ 1vá 1vâ 1vã 1vé 1ví 1vó 1vú 1vê 1võ 1xá 1xâ 1xã 1xé
%1xí 1xó 1xú 1xê 1xõ 1zá 1zâ 1zã 1zé 1zí 1zó 1zú 1zê 1zõ i3â i3ê i3ô}
\hyphenation{hard-ware soft-ware}
% Permitindo inserir acentos soltos, sem caracteres por meio
% de \~, \^, etc. Estes comandos são diferentes do Plain TeX, pois não
% receberão argumentos:
\def\~{\accent"7E\ }\def\"{\accent"7F\ }\def\'{\accent19\ }
\def\^{\accent94\ }\def\`{\accent18\ }
% Enter e Tab serão espaços:
\def\^^M{\ }
\def\^^I{\ }
% O comando para terminar um documento é \fim:
\def\fim{\par\vfill\par\penalty-20000\end}
% Comandos de espaçamento
\def\lacuna#1{\ifvmode\vskip#1\relax\else\hskip#1\relax\fi}
\def\espaco#1{{\dimen0=#1\divide\dimen0 by 3\ifvmode\vskip#1
plus\dimen0 minus\dimen0\else\hskip#1 plus\dimen0
minus\dimen0\relax\fi}}
\def\quad{\hskip1em\relax}
\def\qquad{\hskip2em\relax}
% Comandos \TeX e \MaGiTeX:
\def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX}
\def\MaGiTeX{M\kern-0.15em\lower0.5ex\hbox{A}\kern-0.25emG\lower
0.5ex\hbox{I}\kern-0.1em\TeX}
% O \\ produzirá contrabarra. Útil principalmente no modo verbatim.
\def\\{\char"5C}
% Os nomes internos das fontes em magitex devem ser
% reservados. Somente projetistas de formatos deveriam lidar com tais
% modificações
\defaulthyphenchar=`\- % O caractere de separação silábica deve ser
% setado antes.
\font\tenit@=cmti10 % text italic
\font\tennegit@=cmbxti10 % Negrito e itálico
\font\tennegsl@=cmbxsl10 % Negrito e inclinado
\font\tensl@=cmsl10 % slanted roman
\font\tenrm@=cmr10 % roman text
\font\tenbf@=cmbx10 % boldface extended
\font\tentt@=cmtt10 % typewriter
\font\tennegtt@=cmbtt10 % Negrito monoespaço?
\font\teni@=cmmi10 % math italic
\font\tensy@=cmsy10 % math symbols
\font\tenex@=cmex10 % math extension
\font\sevenrm@=cmr7 % Usado em subscritos e sobrescritos
\font\fiverm@=cmr5 % Usado em subsubscritos e sobresobrescritos
\font\seveni@=cmmi7 % Sobrescritos e subscritos matemáticos
\font\fivei@=cmmi5 % Subsubscritos itálicos
\font\sevensy@=cmsy7 % Símbolos subscritos
\font\fivesy@=cmsy5 % Símbolos subsubscritos
\font\sevenbf@=cmbx7 % Subscritos negritos
\font\fivebf@=cmbx5 % Subsubscritos negritos
% Ajuste de espaçamento em sobrescritos para algumas fontes:
\skewchar\teni@='177 \skewchar\seveni@='177 \skewchar\fivei@='177
\skewchar\tensy@='60 \skewchar\sevensy@='60 \skewchar\fivesy@='60
% Ajuste das fontes em famílias para o modo matemático:
\textfont0=\tenrm@ \scriptfont0=\sevenrm@ \scriptscriptfont0=\fiverm@
\textfont1=\teni@ \scriptfont1=\seveni@ \scriptscriptfont1=\fivei@
\def\mit{\fam1} \def\oldstyle{\fam1\teni@}
\textfont2=\tensy@ \scriptfont2=\sevensy@ \scriptscriptfont2=\fivesy@
\def\cal{\fam2}
\textfont3=\tenex@ \scriptfont3=\tenex@ \scriptscriptfont3=\tenex@
\textfont4=\tenit@
\textfont5=\tensl@
\textfont6=\tenbf@ \scriptfont6=\sevenbf@
\scriptscriptfont6=\fivebf@
\textfont7=\tentt@
% \obeylines é útil para podermos alinhar as linhas à direita,
% esquerda ou centro respeitando as quebras de linha digitadas pelo
% usuário. Vamos usar isso
% em \alinhaversoesquerdo, \alinhaversodireito e \alinhaversocentro.
{\catcode`\^^M=13 %
\gdef\obeylines@{\parfillskip=0pt\catcode`\^^M13 \gdef^^M{\hbox{}\par}}%
\global\let^^M\par} % Se ^^M aparecer em um \write
% E para cancelarmos o \obeylines usamos:
\def\dontobeylines@{\tenrm@\parfillskip=0pt plus 1fil\catcode`\^^M=5\everypar{}}
% Obedece espaços:
\def\obeyspaces@{\catcode`\ 13}
{\catcode`&=11\gdef\sh&{}
\gdef\space@{\hskip1.21ex\sh&}
\catcode`&=4}
{\obeyspaces@\global\let =\space@}
% Comandos de justificação e texto:
\def\alinhaesquerda{\tenrm@\dontobeylines@\rightskip 0em plus 2em
\leftskip 0pt \spaceskip.3333em\xspaceskip.5em\parindent=20pt
\sfcode`\.3000 \sfcode`\?3000 \sfcode`\!3000 \sfcode`\:2000 \sfcode`\;1500
\sfcode`\,1250
\catcode`\{=1\catcode`\}=2\catcode`\$=3\catcode`\&=4\catcode`\#=6
\catcode`\^=7\catcode`\_=8\catcode`\^^I=10\catcode`\~=13\catcode`\%=14
\catcode`\ =10}
\def\alinhaversoesquerdo{\tenrm@\obeylines@\rightskip0pt plus 1fil\leftskip0pt%
\xspaceskip0pt\parindent=20pt
\sfcode`\.3000 \sfcode`\?3000 \sfcode`\!3000 \sfcode`\:2000 \sfcode`\;1500
\sfcode`\,1250
\catcode`\{=1\catcode`\}=2\catcode`\$=3\catcode`\&=4\catcode`\#=6
\catcode`\^=7\catcode`\_=8\catcode`\^^I=10\catcode`\~=13\catcode`\%=14
\catcode`\ =10}
\def\alinhadireita{\tenrm@\dontobeylines@\leftskip 0em plus 2em \rightskip0pt
\spaceskip.3333em\xspaceskip.5em\parindent=20pt
\sfcode`\.3000 \sfcode`\?3000 \sfcode`\!3000 \sfcode`\:2000 \sfcode`\;1500
\sfcode`\,1250
\catcode`\{=1\catcode`\}=2\catcode`\$=3\catcode`\&=4\catcode`\#=6
\catcode`\^=7\catcode`\_=8\catcode`\^^I=10\catcode`\~=13\catcode`\%=14
\catcode`\ =10}
\def\alinhaversodireito{\tenrm@\obeylines@\rightskip0pt\leftskip0pt plus 1fil%
\xspaceskip0pt\parindent=20pt
\sfcode`\.3000 \sfcode`\?3000 \sfcode`\!3000 \sfcode`\:2000 \sfcode`\;1500
\sfcode`\,1250
\catcode`\{=1\catcode`\}=2\catcode`\$=3\catcode`\&=4\catcode`\#=6
\catcode`\^=7\catcode`\_=8\catcode`\^^I=10\catcode`\~=13\catcode`\%=14
\catcode`\ =10}
\def\alinhacentro{\tenrm@\dontobeylines@\rightskip 0em plus 2em \leftskip 0em plus 2em%
\spaceskip.3333em \xspaceskip.5em\parindent=20pt
\sfcode`\.3000 \sfcode`\?3000 \sfcode`\!3000 \sfcode`\:2000 \sfcode`\;1500
\sfcode`\,1250
\catcode`\{=1\catcode`\}=2\catcode`\$=3\catcode`\&=4\catcode`\#=6
\catcode`\^=7\catcode`\_=8\catcode`\^^I=10\catcode`\~=13\catcode`\%=14
\catcode`\ =10}
\def\alinhaversocentro{\tenrm@\obeylines@\rightskip0pt plus 1fil%
\leftskip0pt plus 1 fil\xspaceskip0pt\parindent=20pt
\sfcode`\.3000 \sfcode`\?3000 \sfcode`\!3000 \sfcode`\:2000 \sfcode`\;1500
\sfcode`\,1250
\catcode`\{=1\catcode`\}=2\catcode`\$=3\catcode`\&=4\catcode`\#=6
\catcode`\^=7\catcode`\_=8\catcode`\^^I=10\catcode`\~=13\catcode`\%=14
\catcode`\ =10}
\def\alinhaverbatim{\alinhaversoesquerdo\parindent=0pt\tentt@
\sfcode`\.0 \sfcode`\?0 \sfcode`\!0 \sfcode`\:0 \sfcode`\;0
\sfcode`\,0
\catcode`\{=12\catcode`\}=12\catcode`\$=12\catcode`\&=12\catcode`\#=12
\catcode`\^=12\catcode`\_=12\catcode`\^^I=12\catcode`\~=12\catcode`\%=12
\obeyspaces@\obeylines@}
\def\alinhanormal{\tenrm@\dontobeylines@\leftskip0pt\rightskip0pt\spaceskip0pt%
\xspaceskip0pt\parindent=20pt
\sfcode`\.3000 \sfcode`\?3000 \sfcode`\!3000 \sfcode`\:2000 \sfcode`\;1500
\sfcode`\,1250
\catcode`\{=1\catcode`\}=2\catcode`\$=3\catcode`\&=4\catcode`\#=6
\catcode`\^=7\catcode`\_=8\catcode`\^^I=10\catcode`\~=13\catcode`\%=14
\catcode`\ =10}
% Magitex não interage com usuário via prompt em caso de erro:
\nonstopmode
% Conversão para caracteres maiúsculos e minúsculos:
\def\maiusculo{\uppercase}
\def\minusculo{\lowercase}
% Comandos de datas:
\def\ano{\the\year}
\def\mes{\ifnum\month<10 0\fi\the\month}
\def\dia{\the\day}
\def\nomemes{\ifcase\month Mês Inexistente \or Janeiro \or
Fevereiro \or Março \or Abril \or Maio \or Junho \or Julho \or
Agosto \or Setembro \or Outubro \or Novembro \or Dezembro \else Mês
Inexistente \fi}
% Inserção de novos arquivos:
\def\insere#1{\input #1}
% O número da página:
\def\pagina{\the\pageno@}
% Gera uma linha horizontal:
\def\linha{{\hrule\vskip1pt}}
% Útil para testarmos se algum argumento é vazio
\def\vazio@{}
% O \newif é útil demais para ser descartado. Mas ele ficará
% disponível para escritores de formato:
\outer\def\newif@#1{\count@\escapechar \escapechar-1
\expandafter\expandafter\expandafter
\def\@if#1{true}{\let#1=\iftrue}%
\expandafter\expandafter\expandafter
\def\@if#1{false}{\let#1=\iffalse}%
\@if#1{false}\escapechar\count@} % the condition starts out false
\def\@if#1#2{\csname\expandafter\if@\string#1#2\endcsname}
{\uccode`1=`i \uccode`2=`f \uppercase{\gdef\if@12{}}} % `if' is required
% Definições matemáticas do Plain TeX:
\def\lmoustache{\delimiter"437A340 } % top from (, bottom from )
\def\rmoustache{\delimiter"537B341 } % top from ), bottom from (
\def\lgroup{\delimiter"462833A } % extensible ( with sharper tips
\def\rgroup{\delimiter"562933B } % extensible ) with sharper tips
\def\arrowvert{\delimiter"26A33C } % arrow without arrowheads
\def\Arrowvert{\delimiter"26B33D } % double arrow without arrowheads
\def\bracevert{\delimiter"77C33E } % the vertical bar that extends braces
\def\Vert{\delimiter"26B30D } \let\|=\Vert
\def\vert{\delimiter"26A30C }
\def\uparrow{\delimiter"3222378 }
\def\downarrow{\delimiter"3223379 }
\def\updownarrow{\delimiter"326C33F }
\def\Uparrow{\delimiter"322A37E }
\def\Downarrow{\delimiter"322B37F }
\def\Updownarrow{\delimiter"326D377 }
\def\backslash{\delimiter"26E30F } % for double coset G\backslash H
\def\rangle{\delimiter"526930B }
\def\langle{\delimiter"426830A }
\def\rbrace{\delimiter"5267309 } \let\}=\rbrace
\def\lbrace{\delimiter"4266308 } \let\{=\lbrace
\def\rceil{\delimiter"5265307 }
\def\lceil{\delimiter"4264306 }
\def\rfloor{\delimiter"5263305 }
\def\lfloor{\delimiter"4262304 }
\def\bmod{\nonscript\mskip-\medmuskip\mkern5mu
\mathbin{\fam0\tenrm@ mod}\penalty900\mkern5mu\nonscript\mskip-\medmuskip}
\def\pmod#1{\penalty 0\mkern18mu({\fam0\tenrm@ mod}\,\,#1)}
\def\log{\mathop{\fam0\tenrm@ log}\nolimits}
\def\lg{\mathop{\fam0\tenrm@ lg}\nolimits}
\def\ln{\mathop{\fam0\tenrm@ ln}\nolimits}
\def\lim{\mathop{\fam0\tenrm@ lim}}
\def\limsup{\mathop{\fam0\tenrm@ lim\,sup}}
\def\liminf{\mathop{\fam0\tenrm@ lim\,inf}}
\def\sin{\mathop{\fam0\tenrm@ sin}\nolimits}
\def\arcsin{\mathop{\fam0\tenrm@ arcsin}\nolimits}
\def\sinh{\mathop{\fam0\tenrm@ sinh}\nolimits}
\def\cos{\mathop{\fam0\tenrm@ cos}\nolimits}
\def\arccos{\mathop{\fam0\tenrm@ arccos}\nolimits}
\def\cosh{\mathop{\fam0\tenrm@ cosh}\nolimits}
\def\tan{\mathop{\fam0\tenrm@ tan}\nolimits}
\def\arctan{\mathop{\fam0\tenrm@ arctan}\nolimits}
\def\tanh{\mathop{\fam0\tenrm@ tanh}\nolimits}
\def\cot{\mathop{\fam0\tenrm@ cot}\nolimits}
\def\coth{\mathop{\fam0\tenrm@ coth}\nolimits}
\def\sec{\mathop{\fam0\tenrm@ sec}\nolimits}
\def\csc{\mathop{\fam0\tenrm@ csc}\nolimits}
\def\max{\mathop{\fam0\tenrm@ max}}
\def\min{\mathop{\fam0\tenrm@ min}}
\def\sup{\mathop{\fam0\tenrm@ sup}}
\def\inf{\mathop{\fam0\tenrm@ inf}}
\def\arg{\mathop{\fam0\tenrm@ arg}\nolimits}
\def\ker{\mathop{\fam0\tenrm@ ker}\nolimits}
\def\dim{\mathop{\fam0\tenrm@ dim}\nolimits}
\def\hom{\mathop{\fam0\tenrm@ hom}\nolimits}
\def\det{\mathop{\fam0\tenrm@ det}}
\def\exp{\mathop{\fam0\tenrm@ exp}\nolimits}
\def\Pr{\mathop{\fam0\tenrm@ Pr}}
\def\gcd{\mathop{\fam0\tenrm@ gcd}}
\def\deg{\mathop{\fam0\tenrm@ deg}\nolimits}
\def\bigl{\mathopen\big}
\def\bigm{\mathrel\big}
\def\bigr{\mathclose\big}
\def\Bigl{\mathopen\Big}
\def\Bigm{\mathrel\Big}
\def\Bigr{\mathclose\Big}
\def\biggl{\mathopen\bigg}
\def\biggm{\mathrel\bigg}
\def\biggr{\mathclose\bigg}
\def\Biggl{\mathopen\Bigg}
\def\Biggm{\mathrel\Bigg}
\def\Biggr{\mathclose\Bigg}
\def\big#1{{\hbox{$\left#1\vbox to8.5pt{}\right.\n@space$}}}
\def\Big#1{{\hbox{$\left#1\vbox to11.5pt{}\right.\n@space$}}}
\def\bigg#1{{\hbox{$\left#1\vbox to14.5pt{}\right.\n@space$}}}
\def\Bigg#1{{\hbox{$\left#1\vbox to17.5pt{}\right.\n@space$}}}
\def\n@space{\nulldelimiterspace0pt \mathsurround0pt}
\mathchardef\alpha="010B
\mathchardef\beta="010C
\mathchardef\gamma="010D
\mathchardef\delta="010E
\mathchardef\epsilon="010F
\mathchardef\zeta="0110
\mathchardef\eta="0111
\mathchardef\theta="0112
\mathchardef\iota="0113
\mathchardef\kappa="0114
\mathchardef\lambda="0115
\mathchardef\mu="0116
\mathchardef\nu="0117
\mathchardef\xi="0118
\mathchardef\pi="0119
\mathchardef\rho="011A
\mathchardef\sigma="011B
\mathchardef\tau="011C
\mathchardef\upsilon="011D
\mathchardef\phi="011E
\mathchardef\chi="011F
\mathchardef\psi="0120
\mathchardef\omega="0121
\mathchardef\varepsilon="0122
\mathchardef\vartheta="0123
\mathchardef\varpi="0124
\mathchardef\varrho="0125
\mathchardef\varsigma="0126
\mathchardef\varphi="0127
\mathchardef\Gamma="7000
\mathchardef\Delta="7001
\mathchardef\Theta="7002
\mathchardef\Lambda="7003
\mathchardef\Xi="7004
\mathchardef\Pi="7005
\mathchardef\Sigma="7006
\mathchardef\Upsilon="7007
\mathchardef\Phi="7008
\mathchardef\Psi="7009
\mathchardef\Omega="700A
\mathchardef\aleph="0240
\def\hbar{{\mathchar'26\mkern-9muh}}
\mathchardef\imath="017B
\mathchardef\jmath="017C
\mathchardef\ell="0160
\mathchardef\wp="017D
\mathchardef\Re="023C
\mathchardef\Im="023D
\mathchardef\partial="0140
\mathchardef\infty="0231
\mathchardef\prime="0230
\mathchardef\emptyset="023B
\mathchardef\nabla="0272
\def\surd{{\mathchar"1270}}
\mathchardef\top="023E
\mathchardef\bot="023F
\def\angle{{\vbox{\everycr{}\tabskip0pt plus0pt minus0pt\halign{$\mathsurround0pt\scriptstyle##$\crcr
\not\mathrel{\mkern14mu}\crcr
\noalign{\prevdepth-1000pt}
\mkern2.5mu\leaders\hrule height.34pt\hfill\mkern2.5mu\crcr}}}}
\mathchardef\triangle="0234
\mathchardef\forall="0238
\mathchardef\exists="0239
\mathchardef\neg="023A \let\lnot=\neg
\mathchardef\flat="015B
\mathchardef\natural="015C
\mathchardef\sharp="015D
\mathchardef\clubsuit="027C
\mathchardef\diamondsuit="027D
\mathchardef\heartsuit="027E
\mathchardef\spadesuit="027F
\mathchardef\coprod="1360
\mathchardef\bigvee="1357
\mathchardef\bigwedge="1356
\mathchardef\biguplus="1355
\mathchardef\bigcap="1354
\mathchardef\bigcup="1353
\mathchardef\intop="1352 \def\int{\intop\nolimits}
\mathchardef\prod="1351
\mathchardef\sum="1350
\mathchardef\bigotimes="134E
\mathchardef\bigoplus="134C
\mathchardef\bigodot="134A
\mathchardef\ointop="1348 \def\oint{\ointop\nolimits}
\mathchardef\bigsqcup="1346
\mathchardef\smallint="1273
\mathchardef\triangleleft="212F
\mathchardef\triangleright="212E
\mathchardef\bigtriangleup="2234
\mathchardef\bigtriangledown="2235
\mathchardef\wedge="225E \let\land=\wedge
\mathchardef\vee="225F \let\lor=\vee
\mathchardef\cap="225C
\mathchardef\cup="225B
\mathchardef\ddagger="227A
\mathchardef\dagger="2279
\mathchardef\sqcap="2275
\mathchardef\sqcup="2274
\mathchardef\uplus="225D
\mathchardef\amalg="2271
\mathchardef\diamond="2205
\mathchardef\bullet="220F
\mathchardef\wr="226F
\mathchardef\div="2204
\mathchardef\odot="220C
\mathchardef\oslash="220B
\mathchardef\otimes="220A
\mathchardef\ominus="2209
\mathchardef\oplus="2208
\mathchardef\mp="2207
\mathchardef\pm="2206
\mathchardef\circ="220E
\mathchardef\bigcirc="220D
\mathchardef\setminus="226E % for set difference A\setminus B
\mathchardef\cdot="2201
\mathchardef\ast="2203
\mathchardef\times="2202
\mathchardef\star="213F
\mathchardef\propto="322F
\mathchardef\sqsubseteq="3276
\mathchardef\sqsupseteq="3277
\mathchardef\parallel="326B
\mathchardef\mid="326A
\mathchardef\dashv="3261
\mathchardef\vdash="3260
\mathchardef\nearrow="3225
\mathchardef\searrow="3226
\mathchardef\nwarrow="322D
\mathchardef\swarrow="322E
\mathchardef\Leftrightarrow="322C
\mathchardef\Leftarrow="3228
\mathchardef\Rightarrow="3229
\def\neq{\not=} \let\ne=\neq
\mathchardef\leq="3214 \let\le=\leq
\mathchardef\geq="3215 \let\ge=\geq
\mathchardef\succ="321F
\mathchardef\prec="321E
\mathchardef\approx="3219
\mathchardef\succeq="3217
\mathchardef\preceq="3216
\mathchardef\supset="321B
\mathchardef\subset="321A
\mathchardef\supseteq="3213
\mathchardef\subseteq="3212
\mathchardef\in="3232
\mathchardef\ni="3233 \let\owns=\ni
\mathchardef\gg="321D
\mathchardef\ll="321C
\mathchardef\not="3236
\mathchardef\leftrightarrow="3224
\mathchardef\leftarrow="3220 \let\gets=\leftarrow
\mathchardef\rightarrow="3221 \let\to=\rightarrow
\mathchardef\mapstochar="3237 \def\mapsto{\mapstochar\rightarrow}
\mathchardef\sim="3218
\mathchardef\simeq="3227
\mathchardef\perp="323F
\mathchardef\equiv="3211
\mathchardef\asymp="3210
\mathchardef\smile="315E
\mathchardef\frown="315F
\mathchardef\leftharpoonup="3128
\mathchardef\leftharpoondown="3129
\mathchardef\rightharpoonup="312A
\mathchardef\rightharpoondown="312B
\def\joinrel{\mathrel{\mkern-3mu}}
\def\relbar{\mathrel{\smash-}} % \smash, because - has the same height as +
\def\Relbar{\mathrel=}
\mathchardef\lhook="312C \def\hookrightarrow{\lhook\joinrel\rightarrow}
\mathchardef\rhook="312D \def\hookleftarrow{\leftarrow\joinrel\rhook}
\def\bowtie{\mathrel\triangleright\joinrel\mathrel\triangleleft}
\def\models{\mathrel|\joinrel=}
\def\Longrightarrow{\Relbar\joinrel\Rightarrow}
\def\longrightarrow{\relbar\joinrel\rightarrow}
\def\longleftarrow{\leftarrow\joinrel\relbar}
\def\Longleftarrow{\Leftarrow\joinrel\Relbar}
\def\longmapsto{\mapstochar\longrightarrow}
\def\longleftrightarrow{\leftarrow\joinrel\rightarrow}
\def\Longleftrightarrow{\Leftarrow\joinrel\Rightarrow}
\def\iff{\;\Longleftrightarrow\;}
\mathchardef\ldotp="613A % ldot as a punctuation mark
\mathchardef\cdotp="6201 % cdot as a punctuation mark
\mathchardef\colon="603A % colon as a punctuation mark
\def\ldots{\mathinner{\ldotp\ldotp\ldotp}}
\def\cdots{\mathinner{\cdotp\cdotp\cdotp}}
\def\vdots{\vbox{\baselineskip4pt \lineskiplimit0pt
\kern6pt\hbox{.}\hbox{.}\hbox{.}}}
\def\ddots{\mathinner{\mkern1mu\raise7pt\vbox{\kern7pt\hbox{.}}\mkern2mu
\raise4pt\hbox{.}\mkern2mu\raise1pt\hbox{.}\mkern1mu}}
\def\acute{\mathaccent"7013 }
\def\grave{\mathaccent"7012 }
\def\ddot{\mathaccent"707F }
\def\tilde{\mathaccent"707E }
\def\bar{\mathaccent"7016 }
\def\breve{\mathaccent"7015 }
\def\check{\mathaccent"7014 }
\def\hat{\mathaccent"705E }
\def\vec{\mathaccent"017E }
\def\dot{\mathaccent"705F }
\def\widetilde{\mathaccent"0365 }
\def\widehat{\mathaccent"0362 }
\def\overrightarrow#1{\vbox{\mathsurround0pt\everycr{}\tabskip0pt plus0pt minus0pt\halign{##\crcr
\rightarrowfill\crcr\noalign{\kern-1pt\prevdepth-1000pt}