Newsgroup: it.comp.software.tex
Titolo: Come memoriazzare il contenuto di un registro?...

Mi trovo di fronte alla difficoltà di poter memorizzare il contenuto di un registro
di tipo count...
Precisamente ho definito una Macro e l' ho chiamata Dimostrazione... che più o meno è
così
implementata...
Definizione [#1]  #2 {.... }
Tale macro è in grado di scrivere nel pdf un reference point... avente come etichetta
 l' argomento #1...
Il parametro #2 contiene invece il contenuto della Definizione... Ma questo non ci
interessa...
Dopo aver inizializzato un registro di tipo count che viene
incrementato di 1 ad ogni "chiamata" della macro...
Tramite i comandi del PdfTeX posso così risalire al punto in cui ho
introdotto la definizione attraverso il  riferimento presente nel
pdf  avente  nome #1...
Quello che voglio ora è poter salvare il contenuto del registro count
in modo da poter scrivere in un qualsiasi punto del sorgente...
Per la definizione \the\DefNumb etc...
Essendo DefNumb il registro di tipo count presente nella macro da me definita...
Grazie a chiunque vorrà rispondermi....
Saluti Joshwa....

 Definizione [#1]  #2 {.... }
Ho trovato il bug nell'uso delle definizioni in ConTeXt.
Per patchare, metti il codice seguente in cont-loc:
======== INIZIO CODICE ============
% Questo codice corregge un bug nella gestione
% dei riferimenti per le enumerazioni:
\def\special@@definitiewoord#1#2#3#4[#5]#6#7%
  {%
   \strut
   \doifelsevalue{\??dd#1\c!nummer}{\v!nee}
     {\!!doneafalse}
     {\doifelse{#5}{-}
        {\!!doneafalse}
        {\!!doneatrue}}%
   \chardef\definitiekoppeling=0
   \iflocation
     \doifvaluesomething{\??dd#1\c!koppeling}
       {\processaction % genereert > of <
          [\getvalue{\??dd#1\c!koppelwijze}]
          [ \v!lokaal=>\chardef\definitiekoppeling=1, % old: default
           \v!globaal=>\chardef\definitiekoppeling=2]}% new: global crosslinking
   \fi
   \stelnummerin % the number is called indirectly
     [\getvalue{\??dd#1\??dd\c!nummer}]
     [\c!sectienummer=\getvalue{\??dd#1\c!sectienummer}]%
   \if!!donea
     \getvalue{\e!volgende#2#1}%
     \iflocation
       \bgroup
       \setvalue{\??dd#1\c!sectienummer}{\v!ja}%
       \protectconversion
      %\maakvoorafgaandenummer[#1]%
       \maakvoorafgaandenummer[\getvalue{\??dd#1\??dd\c!nummer}]%
       \ifcase\definitiekoppeling \or
         \xdef\internaldoornummer{#3{#1}}%
         \rawreference{\s!num}{#1:\internaldoornummer}{}%
       \or
         \xdef\internaldoornummer{\countervalue{\??dd\c!koppeling#1}}%
         \rawreference{\s!num}{#1:\internaldoornummer}{}%
       \fi
       \egroup
     \fi
    %\maakvoorafgaandenummer[#1]%
     \maakvoorafgaandenummer[\getvalue{\??dd#1\??dd\c!nummer}]%
     \hbox
       {\let\normalkap\relax % sorry, uppercase causes troubles
        \doattributes        % \nocase primitive needed
          {\??dd#1}\c!kopletter\c!kopkleur
          {\getvalue{\??dd#1\c!commando}% hook for taco 
             {\showdntext{#2#1}%
              \domakednnummer{#1}{#2}{#3}}}%
        \iflocation\ifcase\definitiekoppeling \else
          \edef\localconnection{\getvalue{\??dd#1\c!koppeling}:\internaldoornummer}%
          \doifreferencefoundelse{\localconnection}
            {\in[\localconnection]}{}% genereert > of <
         %\in[\localconnection]%
        \fi\fi}%
     \preparethenumber{\??dd#1}\voorafgaandenummer\preparednumber
     \edef\thenumbertouse{%
       \preparednumber
       \nummer[\getvalue{\??dd#1\??dd\c!nummer}]}%
     \doifnot{#5}{-}{\rawreference{\s!num}{#5}{\thenumbertouse}}%
   \else % Why was this strange expansion needed? 
     \hbox
       {\edef\!!stringa{\showdnpuretext{#2#1}}% nog eens testen binnen \expanded
        \expanded{\doattributes{\??dd#1}\noexpand\c!kopletter\noexpand\c!kopkleur
          {\noexpand\getvalue{\??dd#1\c!commando}%
             {\!!stringa}}}%
        \doifnot{#5}{-}{\rawreference{\s!num}{#5}{}}}%
   \fi}
% Fine patch enumerazioni
======== FINE CODICE ============
Cosa è cont-loc.tex? Questo file viene usato apposta per patchare 
temporaneamente ConTeXt, in attesa della beta successiva che aggiunga 
queste correzioni: il file consiste semplicemente di un
\unprotect
seguito dalle patch, seguite da un
\protect
Se non esiste, si può crearlo (ricordandosi di aggiornare il database 
dei nomi dei file). Se la patch non funziona, ricordati di controllare 
che cont-loc venga effettivamente caricato (lo si vede dal log). Puoi 
anche mettere la patch in cont-new, che però rischia di essere 
sovrascritto al prossimo aggiornamento.
Una volta "applicata" la patch, potrai definire una enumerazione 
"definizione" come già spiegato nei precenti post relativi, ed usare 
un gancio di riferimento in parentesi quadre.
Per quanto riguarda il problema in sé: è molto più complicato di 
quanto non sembri: il meccanismo dei riferimenti incrociati (ed 
infatti esso è implementato così sia nel LaTeX che nel ConTeXt) 
RICHIEDE l'uso di passate multiple, scritture su file ausiliari, e 
così via. Allora tanto vale approfittare di quanto fornito dal formato 
in uso ... (\rawreference & co, nel caso del ConTeXt).
-- 
Giuseppe "Oblomov" Bilotta
Axiom I of the Giuseppe Bilotta
theory of IT:
Anything is better than MS

 ha scritto nel messaggio
news:MPG.16b52538b...@powernews.libero.it...
: Joshwa wrote:
: > Mi trovo di fronte alla difficoltà di poter memorizzare il contenuto di un
registro
: > di tipo count...
: >
: > Precisamente ho definito una Macro e l' ho chiamata Dimostrazione... che più o
meno è
: > così
: > implementata...
: >
: > Definizione [#1]  #2 {.... }
:
: Per quanto riguarda il problema in sé: è molto più complicato di
: quanto non sembri: il meccanismo dei riferimenti incrociati (ed
: infatti esso è implementato così sia nel LaTeX che nel ConTeXt)
: RICHIEDE l'uso di passate multiple, scritture su file ausiliari, e
: così via.
  C' ho pensato a scrivere su di un file... e tutto sarebbe effettivamente
semplice...
  se potessi accedere ai file in maniera "decente"... il problema
 è che nel texbook non trovo molto materiale sull' uso dei file..
 Non ho capito una cosa... come faccio ad esempio a scrivere sulla seconda riga...
del
 file... e cioè in modalità append?
 Ogni volta che scrivo su un file il TeX me lo ripulisce...
  E per la lettura poi ? Come dico al Tex di leggere la terza riga...
    o finchè non trova una sequenza di caratteri necesaria?
  Anche questa volta in the TexBook c'e' solo il modo per leggere una riga... la
pima...
    Comunque mi andrebbe bene sapere pure soltanto come fare
    ad esempio a :
 1) Fare in modo di creare un registro di tipo box ad ogni chiamata della macro
        ad es Definizione [Hilbert]
            e il TeX mi crea un registro di tipo box denominato Hilbert...
 OPPURE
2) Come posso chiedere a Tex una volta immesso il contenuto di una linea
    del file ausiliario in un registro...
    Di scorrere il contenuto alla ricerca di una parola?
    Non voglio sapere l'algoritmo di ricerca ovviamente...
    Voglio solo sapere come posso chiedere a TeX di scorrere il contenuto di un
registro...
    parola dopo parola o carattere dopo carattere...
Ma forse lo sto sopravvalutando....:-)


 pima...
Potresti provare a studiare il codice che usano LaTeX e ConTeXt per 
accedere ai file ausiliari. ConTeXt usa un accesso molto più 
sofisticato (accesso diversificato in più punti), mentre LaTeX legge 
l'intero file .aux all'inizio della passata.
Credo che la maniera di lavorare del ConTeXt sia di leggere per intero 
il file ausiliare ignorando tutte le righe non pertinenti.
