Newsgroup: it.comp.software.tex
Titolo: Header in Context

Come faccio a scrivere nel' header in context?
Vorrei mettere il nome del capitolo e il nome della sezione.
Ho notato che ConTeXt inibisce l'uso dell' headline del TeX.
E' possibile riabilitarlo in qualche modo?
Il problema nasce dal fatto che ho ridefinito i comandi chapter
e section, č possibile fare qualcosa?
Grazie Joshwa..

 e section, è possibile fare qualcosa?
Dipende. COME hai ridefinito chapter e section? La maniera 'giusta' 
con ConTeXt sarebbe: (1) definire una macro che faccia il layout (2) 
associare detta macro al chapter o section.
Ad esempio:
\def\CreaCapitolo#1#2{Fai qualcosa con #1 (il titolo) e #2 (il 
numero)}
\setuphead[chapter][command=\CreaCapitolo]
\def\CreaSezione#1#2{Come sopra, per la sezione #1, numero #2}
\setuphead[section][command=\CreaSezione]
In questa maniera ti puoi fare i layout di fantasia, senza manomettere 
le funzionalità interne.
-- 
Giuseppe "Oblomov" Bilotta
Axiom I of the Giuseppe Bilotta
theory of IT:
Anything is better than MS

 Joshwa wrote:
Ho provato a fare come dici tu ma non funziona.. :-(
Comunque ti riporto la macro MyChapter da me definita:
________________________________________________________
\newcount\ChapNumb% Creo un nuovo registro di tipo count
\def\ClearChapNumb{\ChapNumb=1\relax}% Macro per la pulizia del registro lo
riporta ad uno
\def\MyChapter#1{
   \ClearDefNumb % Azzera registro DefNumb
   \advance\ChapNumb by 1% Incrementa il registro di uno
    \vfill\eject
    \hbox{ } \vskip 5cm
    \startcolor[LightViola]
      {
            \MonotypeXXIV % Font di tipo Monotype Corsiva a 24pt
             \centerline{Capitolo \the\ChapNumb}\vskip 10pt
             \centerline{\MonotypeXXXVI #1}\vskip 2pt
       }
   \stopcolor
   \vfill\eject
}
_________________________________________________________
Ora dovrei scrivere:
\setuphead[chapter][command=\MyChapter]
\setupheader[lefttext={getmarking[chapter]}]
Dopodichč scrivendo
\MyChapter{LaTeX}
dovrebbe funzionare.
Beh cosě non va... :-)
Mi spieghi un po' meglio?

 _________________________________________________________
\MyChapter deve accettare due parametri: in uno ci sarà il titolo, 
nell'altro ci sarà il numero autogenerato da ConTeXt. È inoltre 
opportuno parametrizzare tutti gli elementi che puoi parametrizzare. 
Ad esempio, definisci (al di fuori della macro \MyChapter):
* uno spazio bianco da mettere sopra (come
        \defineblank[sopracapitolo][5cm]
  )
* uno spazio bianco da mettere tra numero e titolo (come
        \defineblank[sopratitolo][10pt]
  )
* un colore apposta per il capitolo (ad esempio ChapterColor)
* un font da usare per il numero (ad esempio ChapNumFont)
* un font da usare per il titolo (ad esempio ChapTitleFont)
e fai spezzare le pagine al ConTeXt stesso:
\def\MyChapter#1#2{%
    \page[force]
    \blank[sopracapitolo]
    \startalignment[center]
    \startcolor[ChapterColor]
        \ChapNumFont Capitolo #2
        \blank[sopratitolo]
        \ChapTitleFont #1
    \stopcolor
    \stopalignment
    \page[force]
}
Poi associa il tutto al capitolo:
\setuphead[chapter][command=\MyChapter]
\setupheadertext[lefttext={\getmarking[chapter]}]
\starttext
\chapter{Un capitolo}
Del testo
\chapter{Un altro capitolo}
Altro testo
\chapter{Ed ancora un capitolo}
Con ancora del testo
\stoptext
Così dovrebbe andare il tutto.
Rimane da considerare la numerazione delle definizioni. In attesa che 
il mio modulo xdesc sia disponibile pubblicamente (devo ancora 
discutere con Hans circa l'esistenza di moduli per TeXUtil, giacché mi 
occorrono funzionalità anche per il postprocessor PErl), puoi fare una 
delle due seguenti cose.
(1) Utilizzare i meccanismi di generazione automatica dei numeri del 
ConTeXt: questa è una interfaccia privata, basata sui seguenti comandi 
(purtroppo in olandese):
\definieernummer[nome]
(definisci un numero di nome 'nome')
\stelnummerin[nome][way=,block=,text=,location=,conversion=,start=]
(imposta la numerazione; way=bychapter fa sì che venga reimpostato 
automaticamente ad ogni capitolo)
\setnummer[nome]{valore}
(assegna 'valore' al numero 'nome')
\resetnummer[nome]
(reimposta il numero 'nome' al valore specificato da start= nelle 
impostazioni; questo avviene automaticamente ad ogni capitolo se 
way=bychapter, ad ogni sezione se way=bysection, eccetera)
\verhoognummer[nome]
(incrementa il numero 'nome')
\verlaagnummer[nome]
(decremento il numero 'nome')
\volgendenummer[nome][tag][ref]
(chiama \verhoognummer e \huidigenummer (vedi sotto) sul numero 
'nome', quindi ne scrive il valore nel file ausiliario come 
riferimento 'ref' di classe 'tag', per i riferimenti incrociati)
\nummer[nome]
(restituisce il numero nel testo, nella forma imposta dalla 
conversione (parametro conversion= dell'impostazione))
\huidigenummer[nome]
(mette il numero nella pagina, come impostato da location=; viene 
usato ad esempio dai numeri di pagina)
\savenumber[nome]
(salva il valore del numero in uno stack)
\restorenumber[naam]
(ripristina il valore del numero dallo stack)
Puoi quindi effettuare la seguente:
\definieernummer[definizione]
\stelnummerin[definizione][way=bychapter]
 
e poi usare, nella tua macro che manipola le definizioni, 
\verhoognummer[definizione] per incrementarlo e \nummer[definizione] 
per usarne il valore.
La maniera più giusta di fare il tutto sarebbe però un'altra, ovvero 
usare quelle che ConTeXt chiama enumerations. Ne abbiamo già discusso, 
ed il problema essenziale era che le enumerations non permettono di 
usare un titolo aggiuntivo. Questo problema può essere aggirato o con 
il mio modulo xdesc, oppure nel modo descritto tra breve.
Una enumeration va definita nel seguente modo:
\defineenumeration[definizione][text=Definizione,
                                location=hanging,
                                headstyle=normal,
                                headcolor=blue,
                                way=bychapter,
                                right=\MettiTitoloDef]
Questo permette di usare
\startdefinizione[etichetta]
Corpo della definizione
\stopdefinizione
oppure anche
\startdefinizione
Corpo della definizione
\stopdefinizione
Ora, noi vogliamo poter usare anche un titolo, con o senza etichetta, 
oppure niente. Il titolo sarà messo nel comando \MettiTitoloDef. Per 
distinguere la etichetta dal titolo, decidiamo che la sintassi del 
titolo sia
\startdefinizione[etichetta][titolo=Un titolo per la definizione]
Dobbiamo quindi fare in modo che \startdefinizione accetti nessuno, 
uno o al massimo due parametri, e se l'ultimo parametro presente è una 
assegnazione, che venga letto il titolo.
Facciamo quindi la seguente:
\let\originalstartdefinizione\startdefinizione
(salviamo il vecchio valore)
\def\startdefinizione{\dodoubleempty\dostartdefinizione}
(\startdefinizione diventerà \dostartdefinizione[#1][#2] dove #1 e #2 
saranno forniti dall'utente oppure lasciati vuoti se non presenti)
Ora viene il vero comando; se #2 è presente, deve essere 
l'assegnazione, e #1 sarà l'etichetta. Altrimenti, se #1 è 
l'assegnazione, #2 lo ignoriamo.
\def\dostartdefinizione[#1][#2]{%
   \def\next{\dodostartdefinizione[#1][#2]}%
   \doifempty{#2}{\doifassignment{#1}{%
        % se #2 non esiste e #1 è una assegnazione,
        % mettiamolo al secondo posto
        \def\next{\dodostartdefinizione[][#1]}%
   }}%
}
\def\dodostartdefinzione[#1][#2]{%
   % questo è il vero comando, sempre con una assegnazione
   % al secondo posto ed una etichetta al primo
   \getemptyparameters[definizione][#2] %
   % questo prende il titolo
   \ifx\definizionetitolo\empty %
       % se non c'è titolo ...
       \let\MettiTitoloDef\empty
       % non mettiamo niente dopo il numero
   \else %
       % altrimenti, formattiamo il titolo come lo vogliamo
       \def\MettiTitoloDef{%
           \ {\tf \definizionetitolo}%
       }%
   \fi
   % infine, piazziamo la descrizione vera e propria
   \originalstartdefinizione[#1]
}
Ecco: ora puoi usare le numerazioni automatiche. Se hai dubbi (sono 
sicuro di aver spiegato troppo in troppo poco spazio) devi solo 
chiedere chiarimenti.


 sottomano grazie a questo formato.
    Ti dico la verità, appena ho iniziato ad usare context sono
rimasta affascinato dallè infinite possibilità. Ma se tutti ci
fermassimo a non approfondire e ad utilizzare solo
cose forniteci da altri, non si andrebbe più avanti.
Ho preferito per questo iniziare ad approfondire il TeX, per
iniziare ad avere un idea di come vengono impletate tutte le sue
varianti.
Mi piacerebbe tantissimo usare bene il ConTeXt, ma non mi ritengo
ancora pronto ad utilizzarlo... solo quando sarò in grado di comprenderlo
a fondo, di capire i possibili meccanismi utilizzati per la costruzione di
tali macro...
sarò lieto di usarlo. Non so se riesci a capirmi.
Ti faccio un esmpio. Ti trovi ad usare i ConTeXt e la vita ti sorride, i
colori
iniziano a spuntare fuori come i funghi, le imagini non sono più un problema
ma...
in un individuo strano come me questo non fa che aumentre il numero di
domande  ogniqualvolta usa \startcolor...
L' uso di TeX mi ha dato risposta a molti interrogativi. :-)))
In verità dunque, il vero motivo per cui uso il context è per la
gestione dei colori. Più precisamente per i backgrounds, l' uso
dei quale richiederebbe un minimo di conoscenze del pdf.
MA tutto ciò non vuoll dire che nonj leggerò apprfonditamente tutte le
preziose
informazioni che hai postato. Anzi provvederò subito a salvarle :-)
Ma mi toccherà studiarle un po', e sta pur certo che non esiterò
a chiederti ulteriori chiarimenti :-)
In fondo è sempre interessante vedere come sono state implementate
le varie macro. ( forse sarebbe più giusto chiamarle procedure se non
fosse per il modo in cui vengono interpretate).
Grazie mille Joshwa...
P.S. Tieni d'occhio il thread, che appena inizio a capirci qualcosa mi
faccio vivo :-)))


 domande  ogniqualvolta usa \startcolor...
texexec --module --pdf --mode=color colo-ini
texexec --module --pdf --mode=color colo-run
(colo-run non è documentato)
texexec --module --pdf --mode=color spec-*
I moduli spec-* definiscono il comportamento di tutti gli specials: 
ConTeXt lavora a due livelli: uno utente-kernel, così che ad esempio 
l'uso del colore abbia sempre la stessa interfaccia, che trasforma i 
comandi utente in comandi kernel, uno kernel-driver, che trasforma i 
comandi kernel in opportuni special, a seconda del tipo di output 
desiderato. Allo stesso modo lavora anche il LaTeX.
Il problema del voler usare ConTeXt 'solo' per i colori e plain per 
tutto il resto è che la compatibilità fra i due è notevolmente 
ridotta, e se cominci ad usare plain rompi i meccanismi interni del 
ConTeXt, e pertanto finiscono col non funzionare nemmeno quelli che 
volevi usare.


 dove nomemodulo è una delle componenti (e.g. syst-gen, ecc).
Ho provato a compilare syst-gen.tex ma mi dice fatal errore, comunque ecco
il log:
__________________________________________________________________________
This is pdfeTeX, Version 3.14159-14f-released-20000525-2.1 (MiKTeX 2)
(preloaded format=cont-nl 2002.2.11)  11 FEB 2002 11:43
entering extended mode
**texexec.tex
(texexec.tex{pdftex.cfg}
ConTeXt  ver: 2001.11.13  fmt: 2002.2.11  int: dutch  mes: dutch
taal           : taal nl is actief
systeem        : cont-new geladen
(cont-new.tex
systems        : beware: some patches loaded from cont-new.tex!
system (E-TEX) : [line 473] \ifcsname
)
systeem        : cont-old geladen
(cont-old.tex
loading        : Context Old Macros
)
systeem        : cont-fil geladen
(cont-fil.tex
loading        : Context File Synonyms
)
korps          : 12pt rm wordt geladen
taal           : patronen 2-en-2 2-uk-2 2-de-2 2-fr-2 2-es-2 2-nl-2 geladen
specials       : tex,postscript,rokicki geladen
systeem        : texexec.top geladen
(./texexec.top
specials       : tex,postscript,rokicki gereset
specials       : definitiefile tpd wordt geladen
(spec-tpd.tex
specials       : definitiefile fdf wordt geladen
(spec-fdf.tex <unprotect 3> <unprotect 4> <protect 4> <protect 3>)
specials       : fdf geladen
<unprotect 3> <protect 3>)
specials       : fdf,tpd geladen
)
systeem        : macro's uit module abr-01 geladen
(s-abr-01.tex
controle       : logo AMSTEX vervangt een macro, gebruik HOOFDLETTERS!
controle       : logo CONTEXT vervangt een macro, gebruik HOOFDLETTERS!
controle       : logo ETEX vervangt een macro, gebruik HOOFDLETTERS!
controle       : logo LAMSTEX vervangt een macro, gebruik HOOFDLETTERS!
controle       : logo LATEX vervangt een macro, gebruik HOOFDLETTERS!
controle       : logo MATHML vervangt een macro, gebruik HOOFDLETTERS!
controle       : logo METAFONT vervangt een macro, gebruik HOOFDLETTERS!
controle       : logo METAPOST vervangt een macro, gebruik HOOFDLETTERS!
controle       : logo PDFETEX vervangt een macro, gebruik HOOFDLETTERS!
controle       : logo PDFTEX vervangt een macro, gebruik HOOFDLETTERS!
controle       : logo PICTEX vervangt een macro, gebruik HOOFDLETTERS!
controle       : logo PPCHTEX vervangt een macro, gebruik HOOFDLETTERS!
controle       : logo PRAGMA vervangt een macro, gebruik HOOFDLETTERS!
controle       : logo TABLE vervangt een macro, gebruik HOOFDLETTERS!
controle       : logo TEXADRES vervangt een macro, gebruik HOOFDLETTERS!
controle       : logo TEXEDIT vervangt een macro, gebruik HOOFDLETTERS!
controle       : logo TEXEXEC vervangt een macro, gebruik HOOFDLETTERS!
controle       : logo TEXFORM vervangt een macro, gebruik HOOFDLETTERS!
controle       : logo TEXSPELL vervangt een macro, gebruik HOOFDLETTERS!
controle       : logo TEXUTIL vervangt een macro, gebruik HOOFDLETTERS!
controle       : logo TEX vervangt een macro, gebruik HOOFDLETTERS!
controle       : logo XML vervangt een macro, gebruik HOOFDLETTERS!
)
systeem        : macro's uit module mod-01 geladen
(s-mod-01.tex (s-mod-00.tex
systeem        : macro's uit module eenheid geladen
(m-units.tex
controle       : eenheid Angstrom vervangt een macro, gebruik HOOFDLETTERS!
) <lang-a.tmp> <lang-b.tmp> <lang-c.tmp> <lang-d.tmp> (setupa.tex
(mult-sys.tex
loading        : Context Multilingual Macros / System
) (mult-con.tex
loading        : Context Multilingual Macros / Constants
) (mult-com.tex
loading        : Context Multilingual Macros / Commands
)) (setupb.tex
controle       : elktexcommando stelstrutin* vervangt een macro, gebruik
HOOFDL
ETTERS!
)) (./type-pre.tex
typescript     : [math] [ams] [all]
(./type-syn.tex) (./type-enc.tex) (./type-siz.tex) (./type-map.tex)
(./type-spe.tex (math-ams.tex)) (./type-exa.tex))
kleur          : systeem rgb is globaal actief
interactie     : actief
)
systems        : begin file texexec at line 4
(./syst-gen.ted
layout         : achtergronden berekenen
interactie     : pdftex code tussengevoegd
[1.1{psfonts.map}{winfonts.map}] [2.1] . (verb-tex.tex
loading        : Context Support Macros / Pretty TEX Verbatim
system (E-TEX) : [line 280] \scantokens
)
layout         : achtergronden berekenen
[3.1] . . . . . . . . [4.2] . . . . . . . . [5.3] . . .
! TeX capacity exceeded, sorry [pool size=65896].
\convertargument ...ef #2{\detokenize {#1}
                                          }
\copyverbatimline ...rgument #1 \to \next
                                          \gdef \verbatimline {#1}\if...
l.341 ...ndef\!!dimena=0 \chardef\!!boxa=0
If you really absolutely need more capacity,
you can ask a wizard to enlarge me.
!  ==> Fatal error occurred, the output PDF file not finished!
____________________________________________________________________________
_______
Saluti Joshwa


 ! TeX capacity exceeded, sorry [pool size=65896].
Invero, ConTeXt è molto esigente in termini di pool size. 
Temporaneamente, compila aggiungendo il parametro
--passon=--pool-size=1000000
(un milione) alla riga del texexec.
Se funziona, modifica miktex.ini alla sezione [ConTeXt] ed aggiungi
pool_size = 1000000
La cosa migliore è modificare la tua copia personale di miktex.ini (in 
%localtexmf%/miktex/config), in modo da non dover rifare i cambiamenti 
quando aggiorni MiKTeX (ricorda che MiKTeX 2.2 è in beta).
Già che ci sei, alla stessa sezione aggiungi anche
write18 = enable
per attivare lo shell escape, necessario per lanciare MetaPost durante 
le esecuzioni di TeX, come da te richiesto nell'altro post, ed 
aggiungi --alias=context al TeXPassString per miktex in texexec.ini 
per assicurarti che venga letta la configurazione corretta.
Quindi rigenera i formati ConTeXt (almeno cont-en e cont-nl).
