-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathguidatematica.dtx
1242 lines (1202 loc) · 52 KB
/
guidatematica.dtx
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
% \iffalse
% !TEX encoding = UTF-8 Unicode
% !TEX TS-program = pdflatex
%<*system>
\begingroup
\input docstrip.tex
\keepsilent
\preamble
________________________________________
The guidatematica class for typesetting books in the GuIT series
"Guide Tematiche"
Copyright (C) 2012-2021 GuIT,
Gruppo utilizzatori Italiani di TeX e LaTeX
All rights reserved
https://www.guitex.org
License information appended
\endpreamble
\postambleƒ
Copyright 2012, 2013-2020 GuIT,
Gruppo utilizzatori Italiani di TeX e LaTeX
Distributable under the LaTeX Project Public License,
version 1.3c or higher (your choice). The latest version of
this license is at: http://www.latex-project.org/lppl.txt
This Work has the status of `maintained'
The Current Maintainer is the GuIT staff
This work consists of this file guidatematica.dtx,
and the derived files guidatematica.cls and guidatematica.pdf
plus the associated documentation guidatematica-doc.tex
and guidatematica-doc.pdf.
\endpostamble
\askforoverwritefalse
%
\generate{\file{guidatematica.cls}{\from{guidatematica.dtx}{class}}}
%
\def\tmpa{plain}
\ifx\tmpa\fmtname\endgroup\expandafter\bye\fi
\endgroup
%</system>
% \fi
%
% \iffalse
%<*driver>
\ProvidesFile{guidatematica.dtx}
%</driver>
%<class>\NeedsTeXFormat{LaTeX2e}[2009/01/01]
%<class>\ProvidesClass{guidatematica}%
%<*class>
[2021-04-12 v.2.2.00 Classe simmetrica per comporre testi della
collana Guide Tematiche del GuIT]
%</class>
%<*driver>
\documentclass[a4paper]{ltxdoc}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern,textcomp}
\usepackage[italian]{babel}
\hfuzz 10pt
%
\makeatletter
\providecommand*\meta[1]{{\normalfont$\langle$\textit{#1}$\rangle$}}
\providecommand*\marg[1]{{\normalfont\texttt{\{}\meta{#1}\texttt{\}}}}
\providecommand*\oarg[1]{{\normalfont\texttt{[}\meta{#1}\texttt{]}}}
\def\GT@splitargs#1,#2!{\def\@tempA{#1}\def\@tempB{#2}}
\newcommand\garg[1]{\GT@splitargs#1!%
\texttt{(}\meta{\@tempA}\texttt{,}\meta{\@tempB}\texttt{)}}
\newcommand*\comando[1]{{\normalfont\texttt{\string#1}}}
\renewcommand*{\cs}[1]{%
{\normalfont\texttt{\char92#1}\index{#1@\texttt{\char92#1}}}}
\let\csindex\cs
\newcommand*\Sambiente[2]{%
\cs{begin}\marg{#1}\oarg{#2} \dots\ \cs{end}\marg{#1}}
\newcommand*\Dambiente[3]{%
\cs{begin}\marg{#1}\oarg{#2}\oarg{#3} \dots\ \cs{end}\marg{#1}}
\newcommand*\Bambiente[1]{\cs{begin}\texttt{\char123#1\char125}}
\newcommand*\Eambiente[1]{\cs{end}\texttt{\char123#1\char125}}
\newcommand*\Arg[1]{\texttt{\char123\relax#1\char125}}
%
\begin{document}\errorcontextlines=9
\GetFileInfo{guidatematica.dtx}
\title{La classe \texttt{\filename}}
\date{Versione \fileversion; ultima revisione \filedate.}
\author{GuIT\thanks{Web: \texttt{www.guitex.org}}}
\maketitle
\DocInput{guidatematica.dtx}
\end{document}
%</driver>
% \fi
%
%
% \CheckSum{1287}
% \begin{abstract}
% Questa classe \texttt{guidatematica} serve per comporre
% testi da pubblicare nella collana “Guide Tematiche” del GuIT.
% Si appoggia alla classe \texttt{memoir} ma include
% molte personalizzazioni e i pacchetti necessari.
% Differisce dalla classe \texttt{guidatematica} delle
% versioni precedenti per il fatto
% che il disegno della pagina è simmetrico e quindi si
% presta ugualmente bene per comporre (e stampare) oneside
% o twoside. Solo le note marginali eventualmente presenti
% mostrano la differente impostazione. Inoltre è costruita
% in modo da poter lavorare indifferentemente con pdf\LaTeX,
% Xe\LaTeX\ e Lua\LaTeX,
% \end{abstract}
%
% \section{Caratteristiche della classe}
% La classe \texttt{guidatematica.cls} serve per comporre
% libri in italiano con le seguenti specifiche:
% \begin{itemize}
% \item La classe di supporto è la classe
% \texttt{memoir.cls} facente parte del sistema TeX
% in qualsiasi distribuzione completa.
% \item Tutte le opzioni inserite nell'istruzione
% |\documentclass| vengono trasferite integralmente
% alla classe \texttt{memoir}; alcune opzioni per il
% formato della “carta”, sono state ridefinite, ma
% l'utente non dovrebbe osservare nessuna variazione
% rispetto all'impostazione che si avrebbe senza queste
% ridefinizioni.
%
% \item Nelle versioni precedenti si poteva specificare anche
% l'opzione |ipertesto|, ma è stata eliminata per questo motivo:
% il suo scopo era quello di caricare il pacchetto |hyperref|
% per ultimo, perché si riteneva che fosse utile per l'utente
% non doversi preoccupare di questo pacchetto essendo sua scelta
% personale quella di usare o non usare i collegamenti ipertestuali.
% Ma, pur restando una raccomandazione importante quella di caricare
% |hyperref| il più tardi possibile, esistono dei pacchetti,
% come, per esempio, |glossaries|, che vanno caricati dopo.
% Perciò ora al momento di eseguire il comando |\begin{document}|
% questa classe imposta solo i colori dei link; l'utente è pregato
% di non modificarli perché le guide tematiche devono avere gli
% stessi aspetti generali.
%
% \item La classe funziona sia con pdfLaTeX, XeLaTeX e LuaLaTeX;
% le impostazioni sono prefissate e i margini per ulteriori
% personalizzazioni sono ridotti al minimo; lo scopo della
% classe è quello di dare una veste comune alle guide
% tematiche della collana, facendo sì che siano riconoscibili
% a prima vista grazie al loro stile uniforme di composizione.
% \item La classe riconosce da sola il motore di composizione
% e imposta direttamente quanto occorre nella forma richiesta
% dal programma di composizione.
% \item La codifica di entrata deve essere \texttt{utf8}; per
% XeLaTeX essa è implicita; con pdfLaTeX essa viene
% preimpostata e non è possibile con questa classe specificare
% una codifica differente.
% \item La codifica dei font di uscita con pdfLaTeX è
% \texttt{T1} e non è possibile specificare una codifica
% differente, cosa che sarebbe quanto mai sgradevole per
% comporre in italiano dove sono presenti molte lettere
% accentate. Per altro se fosse necessario comporre qualcosa
% in una lingua che usa un alfabeto diverso, basta caricare
% i suoi pacchetti specifici; per scrivere una parola o due
% basta caricare l'encoding dei font specifici in modo diretto:
% per esempio: se si deve scrivere una parola in russo,
% basta caricare esplicitamente il file del suo encoding con
% |\input{t2enc.def}| e poi specificare la codifica |T2| con
% |\fontencoding{T2}| seguito, se occorre, dai comandi per scegliere
% famiglia, serie, forma e corpo del font cirillico che
% si vuole usare.
% \item Con pdfLaTeX il pacchetto \texttt{babel} viene caricato
% con le sole opzioni \texttt{italian} e \texttt{english}; nei rari
% casi in cui fosse necessario usare anche altre lingue, esse vanno
% specificate come opzione alla classe, perché non si può
% chiamare \texttt{babel} due volte con opzioni diverse.
% Le opzioni della classe sono globali e vengono passate
% automaticamente a tutti i pacchetti che sanno che cosa farne.
% \item Con XeLaTeX e LuaLaTeX viene caricato il pacchetto |polyglossia|
% e l'italiano viene impostato come la lingua principale, l'inglese
% come altra lingua; altre lingue possono venire specificate mediante
% il comando |\setotherlanguages| o, con lingue particolari, con
% |\setotherlanguage| con le opzioni specifiche per la lingua.
% Se questa richiede un alfabeto particolare bisogna ricordassi
% di specificare una famiglia di font che contenga l'alfabeto
% desiderato.
% \item Sono stati introdotti molti nuovi comandi e sono stati
% definiti molti nuovi ambienti. Per maggiori informazioni si
% rimanda al documento \emph{guidatematica-doc.pdf} distribuito
% con il “kit” |guidatematica.zip|.
% \end{itemize}
% \StopEventually{}
%
% \section{Codice commentato}
% Le due righe contenti il formato e l'identificazione della classe
% sono già state inserite prima; ora possiamo passare alla gestione
% delle opzioni che vengono quasi tutte passate alla classe
% \texttt{memoir}.
% Viene definita l'opzione |ipertesto| per caricare il pacchetto
% |hypertext| che non non viene caricato di default, perché va
% caricato per ultimo solo se viene specificata l'opzione suddetta.
%
% L'autore potrebbe avere bisogno di caricare ulteriori pacchetti nel
% preambolo, quindi è meglio che |hyperref| venga caricato dopo questi
% ulteriori pacchetti. Per fare ciò basta che l'autore specifichi
% l'opzione |ipertesto| alla classe che provvede a caricare il pacchetto
% |hyperref| come ultima cosa al momento di iniziare la composizione
% della guida tematica.
%
% Vengono reimpostate le opzioni |a4paper|, |a5paper| e |\b5paper|
% e vengono definite le opzioni |tablet| e |pad|, per poter in tutti
% questi casi creare il layout della pagina in modo simile e non
% personalizzabile. Per tutte questo opzioni bisogna ricorrere ad
% opportuni comandi condizionali, per poter ritardare la loro
% esecuzione ad un momento successivo al caricamento della classe
% |memoir|.
% \iffalse
%<*class>
% \fi
% \begin{macrocode}%
\AtBeginDocument{\@ifpackageloaded{hyperref}{\hypersetup{colorlinks,linkcolor={blue},
citecolor={blue!80!black},urlcolor={blue}}}{}}
\newif\ifPAD\PADfalse
\DeclareOption{pad}{\PADtrue\tabletfalse\Aivfalse\Bvfalse\Avfalse}
\newif\iftablet\tabletfalse
\DeclareOption{tablet}{\tablettrue\Aivfalse\Bvfalse\Avfalse\PADfalse}
\newif\ifAiv \Aivfalse
\DeclareOption{a4paper}{\Aivtrue\tabletfalse\Bvfalse\Avfalse\PADfalse}
\newif\ifBv \Bvtrue
\DeclareOption{b5paper}{\Aivfalse\Bvtrue\tabletfalse\Avfalse\PADfalse}
\newif\ifAv \Avfalse
\DeclareOption{a5paper}{\Avtrue\Aivfalse\Bvfalse\tabletfalse\PADfalse}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{memoir}}
\ProcessOptions*\relax
\LoadClassWithOptions{memoir}
% \end{macrocode}
%
% Si carica subito il pacchetto |iftex| che permette di distinguere
% quale motore di composizione si sta usando fra |pdftex|, |xetex|,
% oppure |luatex|.
% \begin{macrocode}
\RequirePackage{iftex}
% \end{macrocode}
% Con |xetex| si carica il pacchetto |fontspec| e si impostano le varie
% forme dei font Latin Modern OpenType, generando anche i comandi
% necessari per la compatibilità con i comandi da usare con |pdftex|
% quando si invoca il pacchetto |cfr-lm| per la gestione estesa dei
% font Latin Modern Type~1. Si provvede nei due casi di caricare i
% pacchetti necessari per la gestione della lingua italiana.
% \begin{macrocode}
\ifPDFTeX
\RequirePackage[utf8]{inputenc}
\RequirePackage[T1]{fontenc}
\RequirePackage[greek.ancien,english,italian]{babel}
\RequirePackage[tt={oldstyle=false,tabular,monowidth}]{cfr-lm}
\else
\RequirePackage{fontspec}
\defaultfontfeatures[\rmfamily,\sffamily]{Ligatures=TeX,Numbers=OldStyle}
\defaultfontfeatures[\ttfamily,\tvfamily]{Numbers=Lining}
\setmainfont{Latin Modern Roman}[SmallCapsFont={* Caps}]
\setsansfont{Latin Modern Sans}
\setmonofont{Latin Modern Mono}
\newfontfamily{\tvfamily}{Latin Modern Mono Prop}
\DeclareTextFontCommand{\texttm}{\ttfamily}
\DeclareTextFontCommand{\texttv}{\tvfamily}
\def\textl#1{{\addfontfeature{Numbers=Lining}#1}}
\RequirePackage{unicode-math}
\setmathfont{Latin Modern Math}
\RequirePackage{polyglossia}
\setmainlanguage[babelshorthands]{italian}
\setotherlanguage{english}
\setotherlanguage[variant=ancient]{greek}
\ifx\tmspace\@undefined
\newlength{\tmspace}\tmspace=\z@
\fi
\fi
% \end{macrocode}
%
%
% Si caricano poi i pacchetti ritenuti necessari; in questa versione
% della classe non viene caricato il pacchetto |guit.sty| perché
% è incompatibile con |XeLaTeX|; certo lo si sarebbe potuto caricare
% nel ramo |true| del test |\ifPDFTeX| e la definizione del logo del
% gruppo in forma grafica la si sarebbe potuta limitare all'uso con
% |XeLaTeX| o di |Lua\LaTeX|; siccome alla data attuale il pacchetto
% |guit.sty| è sottoposto a revisione per l'uso con i font OpenType,
% è molto meglio usare temporaneamente le macro in ogni caso e
% modificare questa classe solo con l'aggiunta di un nuovo pacchetto
% quando |guit.sty| sarà diventato compatibile con tutti i programmi di
% composizione. Il logo tondo, il ``timbro'', del GuIT viene invece
% allegato come codice, visto che si tratta di una variante
% nella quale le lettere della scritta attorno al bordo non appaiono
% mai capovolte.
% \begin{macrocode}
\RequirePackage{graphicx}
\RequirePackage{metalogo}
\RequirePackage{pict2e}[2009/06/01]
\RequirePackage{microtype}
\RequirePackage{etoolbox}
\RequirePackage{xcolor}
\RequirePackage{natbib}
\RequirePackage{multicol}
\RequirePackage{imakeidx}
\RequirePackage{fancyvrb}
\RequirePackage{afterpage}
\RequirePackage{enumitem}
\RequirePackage[right]{eurosym}
\RequirePackage{fancyvrb}
\RequirePackage{listings}
\lstloadlanguages{[LaTeX]TeX}
% \end{macrocode}
%
% Il disegno della gabbia del testo è ispirato al pacchetto
% |canoniclayout|.
% Però è stato osservato che se si compone in modo |oneside| la lettura
% a schermo è agevole, ma la stampa della guida risulta mal composta
% in fronte retro. Se invece si compone in modo |twoside| da una pagina
% all'altra il testo si sposterebbe alternativamente a destra e a
% sinistra a seconda della parità del numero di pagina, visto che il
% disegno della pagina prodotto da |canoniclayout| è asimmetrico.
%
% Per ovviare a questi inconvenient contemporaneamente necessita centrare
% orizzontalmente la gabbia e definire successivamente le testatine e i
% piedini in forma simmetrica così da rendere il layout delle pagine pari
% identiche a quelle dispari; la lettura a schermo e la stampa risultano
% pertanto identiche. Per testatine e piedini si veda più avanti. Per
% simmetria la gabbia viene centrata anche verticalmente.
%
% Prima però bisogna definire il formato della carta a seconda del formato
% specificato con l'apposita opzione. Poi, visto che la classe |memoir|
% è già stata caricata, si possono usare i suoi comandi specifici per
% definire gabbia, margini e le altre dimensioni. Si sfruttano registri
% già definiti da |memoir| e si usano alcuni comandi specifici della classe.
%
% \begin{macrocode}
\normalfont
\ifPAD\setstocksize{160mm}{120mm}\fi
\iftablet\setstocksize{120mm}{90mm}\fi
\ifBv\setstocksize{250mm}{176mm}\fi
\ifAiv\setstocksize{297mm}{210mm}\fi
\ifAv\setstocksize{210mm}{146mm}\fi
\settrims{0pt}{0pt}
\settypeblocksize{\paperwidth}{\dimexpr\paperwidth*\paperwidth/\paperheight}{*}
\setlrmargins{*}{*}{*}
\setulmargins{*}{*}{*}
\setheadfoot{\baselineskip}{2\onelineskip}
\setheaderspaces{*}{\onelineskip}{*}
\setmarginnotes{7pt}{\dimexpr\foremargin-3em}{5pt}
\checkandfixthelayout[nearest]
% \end{macrocode}
%
% Viene ora recuperato il comando |\GetFileInfo| dal pacchetto |doc.sty|
% in modo da sfruttare la possibilità di recuperare il dati di un file
% che contenga in testa uno dei comandi |\ProvidesClass| oppure
% |\ProvidesPackage| oppure |\ProvidesFile|, completo di argomento
% obbligatorio e facoltativo nel formato previsto da questi comandi.
% L'argomento di |\GetFileInfo| è il nome del file di cui si vogliono
% estrarre le informazioni, specificato completo di estensione.
% Il file deve essere già stato caricato prima di usare questo comando;
% usandolo si recuperano nelle macro |\filename|, |\filedate| e
% |\fileversion| le informazioni specifiche, che poi possono venire
% usate come meglio si crede.
% \begin{macrocode}
\def\GetFileInfo#1{%
\def\filename{#1}%
\def\@tempb##1 ##2 ##3\relax##4\relax{%
\def\filedate{##1}%
\def\fileversion{##2}%
\def\fileinfo{##3}}%
\edef\@tempa{\csname ver@#1\endcsname}%
\expandafter\@tempb\@tempa\relax? ? \relax\relax}
% \end{macrocode}
%
% Segue ora il comando |\setcopymark| che può venire usato in diversi
% modi; lo si può usare per inserire il marchio di copyright e il nome
% del detentore del suo diritto. Ma lo si può usare anche per marcare
% lo stato di avanzamento di bozze successive. Il suo output viene
% scritto nel margine esterno della pagina. Per altri usi di
% dichiarazioni di diritti si ritiene che sia meglio usare l'Introduzione
% invece del retrofrontespizio, visto che queste guide vengono per
% lo più composte particolarmente per una lettura confortevole a monitor.
% \begin{macrocode}
\let\@copymark\@empty % Di default è vuoto
\newcommand*\setcopymark[1]{\gdef\@copymark{#1}}
\newcommand*\@insertcopymark{%
\begin{picture}(0,0)\unitlength=1pt\relax
\if@twoside
\ifodd\value{page}
\put(\strip@pt\dimexpr\foremargin/2\relax,\strip@pt\footskip)%
{\rotatebox{90}{\makebox(0,0)[l]{\@copymark}}}
\else
\put(-\strip@pt\dimexpr\foremargin/2\relax,\strip@pt\footskip)%
{\rotatebox{90}{\makebox(0,0)[l]{\@copymark}}}
\fi
\else
\put(\strip@pt\dimexpr\foremargin/2\relax,\strip@pt\footskip)%
{\rotatebox{90}{\makebox(0,0)[l]{\@copymark}}}
\fi
\end{picture}%
}
% \end{macrocode}
%
% Si definisce il comando per inserire il layout della pagina sotto
% il testo di una pagina specifica. Vengono specificati i comandi
% sia per la pagina destra sia per quella sinistra, anche se si
% suppone che la maggior parte delle guide tematiche sia composta
% con l'opzione |oneside|. Questi comandi sono completamente
% parametrizzati alle dimensioni del foglio rifilato e valgono per
% qualunque formato.
% \begin{macrocode}
\def\cblayoutsinistro{%
\dimen256=\dimexpr\headheight+\topmargin+1in-4pt-\paperheight\relax
\dimen258=\dimexpr\evensidemargin+1in\relax
\dimen262=1mm\relax
\dimen260=\dimexpr \paperwidth*\p@/\dimen262\relax
\dimen264=\dimexpr \paperheight-\topmargin-\headheight-1in
-\headsep-\textheight\relax
\begin{picture}(0,0)(\strip@pt\dimen258,-\strip@pt\dimen256)%
\put(0,0){\unitlength=\p@
\put(0,0){\framebox(\strip@pt\paperwidth,\strip@pt\paperheight){}}%
\color{red}%
\put(\strip@pt\dimen258,\strip@pt\dimen264){%
\framebox(\strip@pt\textwidth,\strip@pt\textheight){}}%
\Line(0,0)(\strip@pt\paperwidth,\strip@pt\paperheight)%
\put(\strip@pt\dimexpr\paperwidth/2\relax,%
\strip@pt\dimexpr\dimen264+\textheight/2\relax)%
{\circle{\strip@pt\paperwidth}}%
}
\end{picture}}
\def\cblayoutdestro{%
\dimen256=\dimexpr\headheight+\topmargin+1in-4pt-\paperheight\relax
\dimen258=\dimexpr\oddsidemargin+1in\relax
\dimen262=1mm\relax
\dimen260=\dimexpr \paperwidth*\p@/\dimen262\relax
\dimen264=\dimexpr \paperheight-\topmargin-\headheight-1in
-\headsep-\textheight\relax
\begin{picture}(0,0)(\strip@pt\dimen258,-\strip@pt\dimen256)%
\put(0,0){\unitlength=\p@
\put(0,0){\framebox(\strip@pt\paperwidth,\strip@pt\paperheight){}}%
\color{red}%
\put(\strip@pt\dimen258,\strip@pt\dimen264){%
\framebox(\strip@pt\textwidth,\strip@pt\textheight){}}%
\Line(0,\strip@pt\paperheight)(\strip@pt\paperwidth,0)%
\put(\strip@pt\dimexpr\paperwidth/2\relax,%
\strip@pt\dimexpr\dimen264+\textheight/2\relax)%
{\circle{\strip@pt\paperwidth}}%
}
\end{picture}}
% \end{macrocode}
% Si noti che non sempre il rettangolo che rappresenta la gabbia
% è rasente agli ascendenti della prima riga della pagina e alla
% linea di base dell'ultima linea; questo dipende dal fatto che
% il layout della pagina creato da |memoir| prevede un piccolo
% aggiustamento dell'altezza della gabbia affinché contenga un
% numero intero di righe; si aggiunga che il programma di
% composizione talvolta inserisce un salto di pagina quando il
% ``goal'' di altezza della gabbia non è ancora raggiunto; questa
% cosa generalmente dipende dal contenuto della pagina stessa che
% potrebbe contenere oggetti il cui ingombro sulla pagina non
% corrisponde ad un numero intero di righe in corpo normale. Se
% l'aggiustamento è irrisorio, la diagonale della gabbia del testo
% coincide con la diagonale della pagina.
%
% Si specifica ora il comando |\contribguit| che realizza una pagina
% con le informazioni relative all'iscrizione nel gruppo. Il comando
% viene usato in automatico nel retro del frontespizio.
% \begin{macrocode}
\providecommand*\Ars{%
\textsf{\lower -.48ex\hbox{\rotatebox{-20}{A}}\kern -.3em{rs}}\hskip0pt%
\kern -.05em\TeX\hskip0pt\kern -.17em\lower -.357ex\hbox{nica}}
\providecommand\@@title{\ClassError{guidatematica}{\MessageBreak%
I comandi per la pagina del titolo\MessageBreak
vanno dati dopo \string\begin{document}}%
{Premi S <return>, ma aspettati messaggi d'errore}}
\AtBeginDocument{\let\originaltitle\title
\renewcommand\title[1]{%
\def\@@title{{\let\\\ \normalfont\normalsize#1}}\originaltitle{#1}}
\let\originalauthor\author
\renewcommand\author[2][\Large]{\def\@@author{#2}\originalauthor{{#1#2}}}
\def\@@Copyright{}
\DeclareRobustCommand\Copyright[1]{\edef\@@Copyright{#1}}
\let\originalmaketitle\maketitle
\renewcommand\maketitle{\frontmatter*\originalmaketitle
\contribguit}}
\let\@licenza\voidbox
\newcommand\licenza[1]{\long\gdef\@licenza{#1}}
\newcommand{\contribguit}{\newpage
\thispagestyle{empty}
\noindent{\Large
Associati anche tu al \GuIT
\hfill
\setlength{\unitlength}{1mm}
\begin{picture}(50,2)
\setlength{\fboxsep}{0pt}
\put(1,-3){\colorbox{gray}{\framebox(50,6.5){}}}
\put(0,-2){\colorbox{white}{\framebox(50,6.5){%
\href{https://www.guitex.org/home/it/diventa-socio/associarsi-a-guit}{%
Fai click per associarti}}}}
\end{picture}%
}
\bigskip
L'associazione per la diffusione di \TeX\ in Italia, riconosciuta
ufficialmente in ambito internazionale, si sostiene \emph{unicamente}
con le quote sociali.
Se anche tu trovi che questa guida tematica gratuita ti sia stata utile,
il mezzo principale per ringraziare gli autori è diventare socio.
\medskip
Divenendo soci si ricevono gratuitamente:
\begin{itemize}
\item
l'abbonamento alla rivista \Ars;
\item
il DVD \TeX\ Collection;
\item
un eventuale oggetto legato alle attività del \GuIT.
\end{itemize}
L'adesione al \GuIT\ prevede un quota associativa compresa tra \EUR{12,00}
e \EUR{70,00} a seconda della tipologia di adesione prescelta e ha
validità per l'anno solare in corso.
\vspace{\stretch{1}}
\providecommand\authorspace{ }
{\parindent=\z@\let\authorspace\ %
\ifx\@licenza\voidbox
\noindent\@@title\\
Copyright \textcopyright\ \ifcsvoid{@@Copyright}{\the\year}{\@@Copyright}, %
\@@author\\[\baselineskip]
%
Questa documentazione è soggetta alla licenza LPPL (\LaTeX\ Project
Public Licence), versione 1.3 o successive; il testo della licenza è
sempre contenuto in qualunque distribuzione del sistema \TeX\ e nel
sito \url{http://www.latex-project.org/lppl.txt}.\\[\baselineskip]
Questo documento è curato da \@@author.
\else
\@licenza
\fi\par}
\newpage
}
% \end{macrocode}
%
% Si specificano ora i comandi di configurazione per la classe |memoir|.
% Non si vuole il maiuscolo nelle testatine, perché verrà usato il
% maiuscoletto; non si vogliono filetti per separare la testatina e il
% piedino dal testo. Si vuole però che il |\@copymark| sia sempre presente
% nel piedino: vuol dire che se questa macro è vuota non viene stampato
% niente.
%
% Nei piedini il numero di pagina viene composto in maiuscoletto:
% la cosa non è importantissima, ma all'occorrenza i numeri di pagina
% romani minuscoli vengono composti col minuscolo del maiuscoletto e non
% hanno quell'aspetto orribile dei numeri romani composti in tondo
% minuscolo.
%
% \begin{macrocode}
\nouppercaseheads
%\renewcommand{\footruleheight}{\normalrulethickness}
\renewcommand{\footruleskip}{0pt}
\makeheadrule{headings}{\textwidth}{0pt}
\makeheadrule{myheadings}{\textwidth}{0pt}
\makeevenfoot{plain}{\@insertcopymark}{\textsc{\thepage}}{}
\makeoddfoot{plain}{}{\textsc{\thepage}}{\@insertcopymark}
\makeevenfoot{headings}{\@insertcopymark}{\textsc{\thepage}}{}
\makeoddfoot{headings}{}{\textsc{\thepage}}{\@insertcopymark}
\makeevenfoot{myheadings}{\@insertcopymark}{\textsc{\thepage}}{}
\makeoddfoot{myheadings}{}{\textsc{\thepage}}{\@insertcopymark}
% \end{macrocode}
% I mark delle pagine destre e sinistre sono composti centrati
% sia nelle pagine destre sia in quelle sinistre.
% \begin{macrocode}
\makeevenhead{headings}{}{\textsc{\small\leftmark}}{}
\makeoddhead{headings}{}{\textsc{\small\rightmark}}{}
\makeevenhead{myheadings}{}{\textsc{\small\leftmark}}{}
\makeoddhead{myheadings}{}{\textsc{\small\rightmark}}{}
% \end{macrocode}
% Vengono definiti i comandi per ``decorare'' le intestazioni delle testatine.
% \begin{macrocode}
\makepsmarks{headings}{%
\createmark{chapter}{both}{shownumber}{\@chapapp\space}{.\qquad}
\createmark{section}{right}{shownumber}{$\mathsection$\,}{\qquad}
\renewcommand*\indexmark{\markboth{\indexname}{\indexname}}}
% \end{macrocode}
% Vengono definiti gli stili di pagina modificati con il layout disegnato
% sotto. Non sono da usare sistematicamente, ma probabilmente come
% argomenti di |\thispagestyle|.
% \begin{macrocode}
\makepagestyle{headingslayout}
\makeevenhead{headingslayout}{\cblayoutsinistro}{\textsc{\small\leftmark}}{}
\makeevenfoot{headingslayout}{\@insertcopymark}{\textsc{\thepage}}{}
\makeoddhead{headingslayout}{\cblayoutdestro}{\textsc{\small\rightmark}}{}
\makeoddfoot{headingslayout}{}{\textsc{\thepage}}{\@insertcopymark}
% \end{macrocode}
%
% Viene definito lo stile per comporre la pagina iniziale dei capitoli;
% si compone il titolo del capitolo in maiuscoletto e il numero del capitolo
% molto grande fuori nel margine esterno. Si imposta questo stile al
% momento dell'inizio del documento per contrastare eventuali ulteriori
% modifiche inserite nel preambolo.
% \begin{macrocode}
\makechapterstyle{guidatematica}{%
\renewcommand*{\chapnumfont}{%
\fontshape{it}\fontsize{40}{40}\selectfont}
\renewcommand*{\printchaptername}{}
\renewcommand*{\chapternamenum}{}
\renewcommand*{\chaptitlefont}{%
\fontsize{18}{16}\scshape}% sterlineato
\renewcommand{\printchapternum}{%
\noindent\rlap{\makebox[\textwidth][r]{%
\rlap{\makebox[\foremargin][l]{%
\chapnumfont \thechapter}}}}\printchaptertitle}
\renewcommand*{\afterchapternum}{}
}
\AtBeginDocument{\chapterstyle{guidatematica}}
% \end{macrocode}
%
% Vengono ora fissati alcuni parametri stilistici per le pagine che
% iniziano una ``parte'', anche se si ritiene che le guide tematiche
% debbano essere sufficientemente succinte da non richiedere di
% essere divise in parti.
% \begin{macrocode}
\renewcommand*\partnamefont{\normalfont\large\scshape}
\renewcommand*\partnumfont{\normalfont\large\scshape}
\renewcommand*\parttitlefont{\normalfont\huge\scshape}
% \end{macrocode}
%
% Ora le spaziature prima, dopo, a destra e a sinistra dei titoli dei
% comandi di sezionamento minori. Inoltre si definiscono gli stili dei
% titolini e altre informazioni stilistiche per le parti e i capitoli.
% Per l'indice delle figure si allarga lo spazio destinato al loro
% numero, perché si arriva anche a numerazioni di due cifre. Con le
% cifre minuscole l'impostazione di default va bene, ma con le cifre
% maiuscole queste ricoprono l'inizio della didascalia.
% \begin{macrocode}
\setbeforesecskip{-3.5ex plus-1ex minus-0.2ex}
\setbeforesubsecskip{-3ex plus-1ex minus-0.2ex}
\setbeforesubsubsecskip{-2.5ex plus-1ex minus-0.2ex}
\setbeforeparaskip{1\onelineskip plus1ex minus0.2ex}
\setbeforesubparaskip{1\onelineskip plus1ex minus0.2ex}
\setaftersecskip{1.5ex plus0.2ex}
\setaftersubsecskip{1.5ex plus0.2ex}
\setaftersubsubsecskip{1.5ex plus0.2ex}
\setafterparaskip{-1em}
\setaftersubparaskip{-1em}
\setsubparaindent{\parindent}
\setsecheadstyle{\large\scshape\raggedright}
\setsubsecheadstyle{\large\scshape\raggedright}
\setsubsubsecheadstyle{\large\scshape\raggedright}
\setparaheadstyle{\small\scshape}
\setsubparaheadstyle{\small\scshape}
\aliaspagestyle{part}{empty}
\aliaspagestyle{chapter}{empty}
\copypagestyle{titlepage}{headings}
\renewcommand\cftpartpagefont{\scshape}
\renewcommand\cftpartfont{\large\scshape}
\renewcommand\cftchapterfont{\large\scshape}
\renewcommand\cftchapterpagefont{\scshape}
\renewcommand*{\cftchapterfillnum}[1]{%
{\cftchapterleader}\nobreak
\cftchapterformatpnum{#1}%
\cftchapterafterpnum\par\nobreak}
\setlength{\cftbeforechapterskip}{1.0em \@plus 2\p@}
\setlength{\cftfigurenumwidth}{2.5em}
% \end{macrocode}
%
% Grazie alle funzionalità di |memoir| si ridefiniscono anche
% le modalità di comporre le didascalie.
% \begin{macrocode}
\captiondelim{\quad}
\captionnamefont{\small\scshape}
\captiontitlefont{\small}
\captionstyle[\centering]{}
\hangcaption
\captionwidth{\dimexpr\textwidth-2\parindent\relax}\changecaptionwidth
% \end{macrocode}
%
% Qui ora grazie al pacchetto |enumitem| si definiscono, o
% ridefiniscono, comunque si personalizzano i vari ambienti
% che formano liste di tipo diverso.
% Intanto in tutte le liste descrittive l'etichetta viene sempre
% composta in maiuscoletto; se si vuole cambiare font o stile
% basta usare gli appositi comandi nella forma \meta{chiave}
% = \meta{valore} forniti dal pacchetto |enumitem|. Solo per
% il nuovo ambiente descrittivo |plaindescription| la didascalia
% di default è composta in |\normalfont|.
% L'ambiente |blockdescription| viene definito senza le etichette
% sporgenti e senza rientranza del margine sinistro.
% I nuovi ambienti |compactenumerate|, |compactitemize| e
% |compactdescription| sono definiti in modo da annullare tutti
% gli spazi verticali interni e in modo da ridurre gli spazi
% prima e dopo la lista.
% \begin{macrocode}
\renewcommand\descriptionlabel[1]{\hspace\labelsep\normalfont\scshape #1}
\renewcommand\blockdescriptionlabel[1]{\normalfont\scshape #1}
\providecommand\plaindescriptionlabel[1]{\hspace\labelsep\normalfont #1}
\renewlist{blockdescription}{description}{1}
\setlist[blockdescription]{before={\let\makelabel\blockdescriptionlabel},
leftmargin=\z@,labelsep*=0.5em,labelindent=\z@,labelwidth=\z@}
\newlist{plaindescription}{description}{1}
\setlist[plaindescription]{before={\let\makelabel\plaindescriptionlabel}}
\newlist{compactenumerate}{enumerate}{1}
\setlist[compactenumerate,1]{label=\arabic*.,
noitemsep, partopsep=\z@, topsep=.25\onelineskip}
\newlist{compactitemize}{itemize}{4}
\setlist[compactitemize]{label=•,
noitemsep,partopsep=\z@,topsep=.25\onelineskip}
\newlist{compactdescription}{description}{1}
\setlist[compactdescription]{%
style=sameline,noitemsep,partopsep=\z@,topsep=.25\onelineskip}
% \end{macrocode}
%
% Un comando utile epr impostare con i font continuamente scalabili,
% come i Latin Modern semplici o estesi, un corpo qualsiasi; di default
% lo scartamento è impostato a 1,2 volte il corpo, ma può essere
% specificato come primo argomento opzionale.
% \begin{macrocode}
\newcommand*\cambiacorpo[2][1.2]{\bgroup\dimen@=#2\p@\dimen@=#1\dimen@
\edef\x{\noexpand\egroup\noexpand\fontsize{#2}{\strip@pt\dimen@}}\x\selectfont}
\let\setfontsize\cambiacorpo
% \end{macrocode}
% Vengono poi impostati e differiti all'inizio del documento
% i contatori che regolano la profondità di numerazione delle
% sezioni e della loro inclusione nell'indice generale.
% \begin{macrocode}
\AtBeginDocument{\setsecnumdepth{subsection}
\settocdepth{subsection}\maxsecnumdepth{subsection}
\maxtocdepth{subsection}}
% \end{macrocode}
%
% Viene ora definita la virgola intelligente; si veda una
% descrizione più dettagliata della sua utilità in matematica
% per esempio della documentazione di questa classe
% |gidatematica-doc.pdf|. Qui si commenta solo il codice.
%
% Se il comando |\virgoladecimale| risulta già definito, questo è merito
% del modulo |babel-italian|, quindi non se ne fa niente perché la virgola
% decimale con tutto il suo armamentario di macro è già definita. Si
% fornisce invece una definizione più semplice e meno efficiente per
% quando si usa {xelatex} o {lualatex}.
% La prima parte del codice serve per rendere attiva la virgola
% solo in modo matematico e solo quando la lingua principale
% \emph{non} è l'inglese. Si fornisce anche un comando
% |\m@thcomma| come cuore della definizione della virgola attiva.
% \begin{macrocode}
\unless\ifcsname virgoladecimale\endcsname
\unless\ifPDFTeX% non pdflatex
\AtEndPreamble{\ifcsstring{xpg@main@language}{english}{\relax}{%
\mathcode`\,=\string"8000}%
\DeclareMathSymbol{\virgola}{\mathpunct}{letters}{"3B}%
\DeclareMathSymbol{\virgoladecimale}{\mathord}{letters}{"3B}%
}
\else% pdflatex
\AtEndPreamble{\ifcsstring{languagename}{english}{\relax}{%
\mathcode`\,=\string"8000}}
\fi
{\catcode `,=\active \gdef,{\futurelet\let@token\m@thcomma}}%
% \end{macrocode}
% Poi, ritardando l'esecuzione alla fine del preambolo, si definisce
% |\m@thcomma| in modo che svolga il suo compito: |\let@token|
% contiene il token che segue |\m@thcomma| nel file sorgente;
% precisamente il token che segue la virgola nel file sorgente.
% Perciò esso può essere uno spazio, un carattere implicito,
% un carattere esplicito, una macro, un qualunque token di
% categoria diversa da 11 e da 12. Il comando |\m@thcomma|
% assorbe anche il primo token che la segue, purché non sia
% uno spazio, eventualmente già memorizzato in |\let@token|.
% Lo scopo della virgola intelligente è quello di sapere se il
% carattere che viene immediatamente dopo sia una cifra, che
% è di categoria 12, come l'asterisco. Quindi per prima cosa
% si controlla se |\let@token| ha categoria 12. Se non lo è
% allora non si tratta sicuramente di una cifra e la virgola
% intelligente inserisce la virgola interpuntiva.
% Ma se lo è potrebbe essere un carattere esplicito analfabetico
% oppure un carattere implicito di categoria 12. In questo caso
% non lo si può usare per verificare se il carattere implicito
% sia una cifra; ma in matematica nessuno si sognerebbe mai di
% indicare con un carattere implicito una qualunque delle
% 10 cifre decimali; dunque se si tratta di un carattere implicito
% esso rappresenta qualche carattere diverso da una cifra
% e ci vuole la virgola interpuntiva. Solo che per sapere se
% si tratta di un carattere implicito bisogna verificare se esso
% ha la forma di una sequenza di controllo. Per fare questo
% bisogna prendere la stringa che costituisce l'argomento di
% |\m@thcomma|, togliergli il primo carattere (eventualmente
% un backslash) e vedere se quel che resta costituisce il nome
% di una sequenza di controllo a cui è stato assegnato un
% significato; dunque se il token fosse per esempio
% \fbox{\cs{infty}} la stringa sarebbe formata dai caratteri
% |\|, |i|, |n|, |f|, |t|, e |y|, togliendo il primo dei quali
% resta la ``parola'' |infty|; il test |\ifcsname infty\endcsname|
% restituisce il valore ``vero'' se |\infty| ha un significato;
% nel nostro caso quindi si tratterebbe di un carattere
% implicito e ci vuole la virgola interpuntiva. Se invece il
% primo argomento della macro |\m@thcomma| fosse un carattere
% esplicito di categoria 12 (non potrebbe essere altro a questo
% punto dei test), questa operazione di togliere il primo
% carattere, lascerebbe una stringa vuota cosicché si verifica se
% la stringa è vuota; se lo è si trattava di una cifra e ci vuole
% la virgola decimale, se non lo è si tratta di qualcosa diverso
% da una cifra e ci vuole la virgola interpuntiva.
% Certo oltre alle cifre ci sono anche semplici segni come per esempio
% gli operatori binari che usano i caratteri della testiera che potrebbero
% essere scambiati per cifra; ma in questi casi la virgola è sempre
% una virgola seriale e quindi si tratta del tipico caso che anche
% l'autore più distratto scrive lasciandovi dopo uno spazio. In caso
% di distrazione, o negli altri casi non previsti dalla serie di test,
% lasciare uno spazio dopo la virgola nel file sorgente risolve sempre
% ogni problema.
%
% Non tanto semplice ma efficace sia con pdfLaTeX sia con XeLaTeX e LuaLaTeX.
% \begin{macrocode}
\AtEndPreamble{%
\unless\ifcsname m@thcomma\endcsname\providecommand\m@thcomma{}\fi
\renewcommand\m@thcomma[1]{%
\unless\ifcat\noexpand\let@token*%
\virgola
\else
\edef\tempA{\expandafter\@gobble\string#1}%
\ifx\tempA\@empty
\virgoladecimale
\else
\virgola
\fi
\fi#1%
}%
}%
\fi
% \end{macrocode}
%
% Per essere completi conviene provvedere ai comandi per impostare e per
% disimpostare la virgola intelligente, rinviandoli alla fine del preambolo.
% \begin{macrocode}
\AtEndPreamble{%
\providecommand\IntelligentComma{}
\providecommand\NoIntelligentComma{}
\renewcommand\IntelligentComma{\mathcode`\,=\string"8000}
\renewcommand\NoIntelligentComma{\mathcode`\,=\string"613B}
}
% \end{macrocode}
%
% Si ridefiniscono l'ambiente |thebibliography| e |theindex|
% per poterne inserire il titolo nell'indice e per poter
% avere il ``target'' nel punto giusto quando si clicca su
% un link ipertestuale che porti all'inizio di queste
% ``sezioni''. Per giunta queste parti dovrebbero cadere
% nella back matter, quindi non verrebbero nemmeno numerati.
%
% Per l'indice o gli indici analitici non dovrebbero esserci
% problemi, nel senso che il pacchetto |imakeidx| ridefinisce
% a sua volta quelli analitici per poterli gestire a modo suo.
% Probabilmente è del tutto inutile la ridefinizione fatta
% in questa classe, ma non dà nessun fastidio, quindi la
% si lascia lo stesso.
% \begin{macrocode}
\let\imki@idxprologue\empty
\def\imki@columns{2}
\renewenvironment{theindex}
{%
\clearforchapter
\csname phantomsection\endcsname
\chapter{\indexname}%
\indexmark%
\parindent\z@
\parskip\z@ \@plus .3\p@\relax
\let\item\@idxitem
\begin{multicols}{\imki@columns}[\imki@idxprologue]
\raggedright
}
{%
\end{multicols}\gdef\imki@idxprologue{}\clearpage
}
% \end{macrocode}
%
% All'inizio del documento si inserisce l'indicazione
% per lo stile bibliografico. Avendo caricato il pacchetto
% |natbib| e lo stile bibliografico |guidatematica.bst|
% le citazioni e l'elenco dei riferimenti bibliografici
% vengono eseguiti con lo stile ``autore-anno''. |natbib|
% da parte sua mette a disposizione tanti comandi della
% famiglia |\cite|, che si possono usare più di una mezza
% dozzina di tali comandi per avere lo stile predefinito,
% fra parentesi, solo l'autore, solo l'anno, eccetera.
% \begin{macrocode}
\AtBeginDocument{\bibliographystyle{guidatematica}}%
% \end{macrocode}
%
% Come configurazione generale con |XeLaTeX| si impone
% lo stile senza il rientro del primo capoverso di un
% capitolo o di ogni sezione. Con |pdfLaTeX| non è
% necessario, perché questa funzionalità è predefinita.
% Tuttavia ogni autore di guide tematiche è padronissimo
% di impostarsi il pacchetto |indentfirst| se vuole
% rientrare tutti i capoversi, anche quelli che seguono
% ogni comando di sezionamento.
% \begin{macrocode}
\unless\ifPDFTeX
\ifcsstring{xpg@main@language}{italian}%
{\csgappto{init@extras@italian}{\nofrench@indent}}{}%
\fi
% \end{macrocode}
%
% L'ambiente per la pagina del titolo, |titlepage| non
% è definita con la classe |memoir|; qui lo si definisce
% apposta e funzionalmente per questa classe, non è un
% comando da usare da parte dell'utente; egli deve
% invece limitarsi a dare i comandi |author|, un solo
% autore, o una lista di autori separati da virgole o
% altri spaziatori; |\title| con il titolo della guida;
% |\subtitle| per un eventuale sottotitolo; |\date| con
% le informazioni che ritiene più opportune.
% \begin{macrocode}
\newenvironment{titlepage}{\clearpage
\pagestyle{titlepage}
\makeoddhead{titlepage}{}{\smash{{\Large\scshape\@author}}}{}
\makeoddfoot{titlepage}{}{\smash{{\large\scshape\@date}}}{}
}{\clearpage}
\providecommand\subtitle[1]{\gdef\@subtitle{#1}}
\let\@subtitle\empty
\renewcommand\maketitle{
\begin{titlepage}
\vspace*{\stretch{.7}}
{\centering\LARGE\scshape\@title\par}
\ifdefvoid{\@subtitle}{}{\vspace{2\onelineskip}
{\centering\scshape\Large\@subtitle\par}}
\vspace{\stretch{.7}}
{\centering\resizebox{0.23\textwidth}{!}{\logoguittondo}\par}
\vspace*{\stretch{.7}}
\end{titlepage}
}
% \end{macrocode}
%
% Invece sono importanti questi tre ambienti: |esercizio|, |medaglione|
% e |sintassi|. Il primo serve per incorniciare un testo;
% per la larghezza l'ambiente medaglione accetta un argomento
% facoltativo, predefinito alla giustezza corrente (quindi
% una giustezza che cambia all'interno delle liste);
% determina la giustezza di composizione all'interno del
% medaglione tenendo conto dello spessore del filetto della
% cornice e dello spazio di separazione fra la cornice e
% il testo in essa contenuto.
%
% I secondo ambiente, |sintassi| è un medaglione adatto
% per incorniciare i comandi e quindi per descrivere la
% loro sintassi. Spesso l'ambiente sintassi contiene
% la descrizione della sintassi di un solo comando;
% dovendo indicare la sintassi di molti comandi è opportuno
% sfruttare la composizione sbandierata con l'allineamento
% a sinistra (predefinito) ma con un ``a capo'' automatico
% ogni volta che nel sorgente si incontra un ``a capo'' nel
% testo sorgente; in questi casi sta all'utente di specificare
% il comando |\obeylines| all'inizio dell'ambiente cosicché
% non dovrà più ricordarsi di mettere esplicitamente un
% comando |\\| alla fine di ogni riga.
% \begin{macrocode}
\newenvironment{medaglione}[1][\linewidth]{%
\begin{lrbox}{0}%
\begin{minipage}{\dimexpr#1-2\fboxsep-2\fboxrule}
}{%
\end{minipage}\end{lrbox}\fbox{\usebox{0}}\relax
}
\newenvironment{sintassi}{\flushleft\medaglione}%
{\endmedaglione\endflushleft}
% \end{macrocode}
%
% Per descrivere la sintassi sono utili i comandi seguenti
% al fine di semplificare la scrittura delle parti di testo
% corrente e differenziare gli argomenti generici; quelli
% obbligatori e quelli facoltativi; dovendo descrivere
% delle cose riguardanti il disegno programmato, le
% coordinate spesso vengono distinte con due valori,
% separati da una virgola e racchiusi fra parentesi tonde;
% anche in questo caso siamo di fronte alla descrizione di
% una sintassi e si dispone di un apposito comando per
% descrivere le coordinate geometriche.
%
% {\tolerance=9999\relax
% I comandi sono |\meta| per un \meta{argomento generico};
% |\marg| per un \marg{argomento obbligatorio}; |\oarg| per un
% \oarg{argomento facoltativo}; |\garg| per le
% \garg{coordinate,geometriche}; |\comando| per un