Caratteri particolari di LaTeX nell’indice analitico

  • Questo topic ha 7 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 15 anni fa da OldClaudio.
  • Creatore
    Topic
  • #62894
    Up
    0
    Down
    ::


    Il problema è semplice: si vogliono mandare automaticamente nell’indice analitico anche i comandi che di solito nelle guide stanno all’inizio dell’indice:

    `\@ \{ \} \#`

    e tutti quelli che se ci vengono mandati con \index creano problemi. Forse non sono veri e propri comandi, ma ci capiamo lo stesso. Le sequenze \[ \] \, \: \; non creano problemi…

    Immaginando di volerlo fare con un comando chiamato \comando, come si potrebbe fare? Oppure, meglio: c’è un posto in cui lo si spiega?

    Ciao
    Tommaso

Visualizzazione 6 filoni di risposte
  • Autore
    Risposte
    • #62895
      Up
      0
      Down
      ::


      Esempio?

      Ciao
      Enrico

    • #62896
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Nella documentazione di makeindex c’è scritto come mettere il carattere di escape prima dei caratteri da indicizzare; di solito basta usare ” (doppio apice).

        Tieni presente che l’argomento di \index viene “sterilizzato” (il comando che lo esegue si chiama \@sanitize) per cui tutto l’argomento di \indec va a finire, insieme ad altra roba, dentro il file .idx; è poi il programma makeindex che interpreta quei pochi caratteri speciali per li, al fine di gestire l’ordine alfabetico, ma poi sta a te mettere nella parte di codice dopo @ come scrivere correttamente quei segni in modo che il file alfabetizzato possa essere elaborato da pdflatex in modo da non fare pasticci con i suoi caratteri speciali. Per @ potrebbe bastare un doppio, ma è meglio chiamalo con \symbol{64}
        La graffa aperta con \symbol{123}, la graffa chiusa con \symbol{125}, il “cancelletto” con \symbol{35} eccetera. per conoscere questi numeri basta la tabellina dei codici ASCII, oppure una lettura attenta della tabella D.1 dell’ Introduzione.
        A me pice più un’altra soluzione, quella di remettere a qualunque dei caratteri attivi o speciali da dare in pasto a pdflatex con il file alfabetizzato .ind semplicemente il comando \string che li rende di categoria 12, cioè li riporta a quello che sono, caratteri non alfabetici.

        Visto che in un altro topic parlavo di accrocchi, questi sono gli accrocchi che bisogna fare per convincere pdflatex a fare l’impossibile.

      • #62897
        Up
        0
        Down
        ::

        egreg9″ post=61847Esempio?

        Ciao
        Enrico

        Pronti. Il comando è

        `\DeclareRobustCommand*{\comando}[1]{\mbox{\lstinline!\\#1!}\index{#1@\texttt{\makebox[0pt][r]{\textbackslash}#1}}}`

        e si usa con \comando{textsf} per ottenere dopo la composizione “\textsf”. Dopo aver eseguito MakeIndex mi trovo \textsf anche nell’indice analitico.
        Fantastico. Ma ci sono, appunto, alcuni caratteri come @ che non vengono mandati nell’indice analitico. Scrivendo \comando{@} mi trovo “\@” nel testo, ma solo “\” o addirittura niente nell’analitico (ci sono però i riferimenti alle pagine). Insomma: alcuni caratteri danno problemi. E sono @, la barra rovescia, le graffe. Forse sono proprio i caratteri particolari di LaTeX, perché un segno di punteggiatura (pensiamo a \; non dà questi problemi).

        Può bastare come esempio?

        Ciao
        Tommaso

      • #62898
        Up
        0
        Down
        ::

        illinguista1972″ post=61862

        Esempio?

        Ciao
        Enrico

        Pronti. Il comando è

        `\DeclareRobustCommand*{\comando}[1]{\mbox{\lstinline!\\#1!}\index{#1@\texttt{\makebox[0pt][r]{\textbackslash}#1}}}`

        e si usa con \comando{textsf} per ottenere dopo la composizione “\textsf”. Dopo aver eseguito MakeIndex mi trovo \textsf anche nell’indice analitico.
        Fantastico. Ma ci sono, appunto, alcuni caratteri come @ che non vengono mandati nell’indice analitico. Scrivendo \comando{@} mi trovo “\@” nel testo, ma solo “\” o addirittura niente nell’analitico (ci sono però i riferimenti alle pagine). Insomma: alcuni caratteri danno problemi. E sono @, la barra rovescia, le graffe. Forse sono proprio i caratteri particolari di LaTeX, perché un segno di punteggiatura (pensiamo a \; non dà questi problemi).

        Può bastare come esempio?

        Certo. La documentazione di MakeIndex mette in chiaro che nell’argomento di \index le graffe devono essere bilanciate e che, a questo proposito, \{ e \} contano. Inoltre i caratteri speciali di MakeIndex devono essere “protetti”. I caratteri speciali sono !, |, @ e . L’ultimo è speciale perché serve appunto a proteggere gli altri tre e infatti \” non dà problemi.

        Per i quattro caratteri speciali puoi usare
        `\DeclareRobustCommand*{\comandox}[1]{\mbox{\lstinline$\\#1$}%
        \index{“#1@\texttt{\protect\makebox[0pt][r]{\textbackslash}”#1}}}`
        e così \comandox{@}, \comandox{“}, \comandox{!} e \comandox{|} daranno il corretto risultato. Per \{ e \} è un poco più complicato. Ti do un codice completo:
        `\DeclareRobustCommand*{\zwbs}{\makebox[0pt][r]{\textbackslash}}
        \DeclareRobustCommand*{\comando}[1]{\mbox{\lstinline!\\#1!}%
        \index{#1@\texttt{\zwbs#1}}}
        \DeclareRobustCommand*{\comandox}[1]{\mbox{\lstinline$\\#1$}%
        \index{“#1@\texttt{\zwbs”#1}}}
        \newcommand\gobble[1]{}
        \newcommand\ilbrace{\texttt{\textbackslash\{}\index{\{\gobble\}@\texttt{\zwbs\{\gobble\}}}}
        \newcommand\irbrace{\texttt{\textbackslash\}}\index{\gobble\{\}@\texttt{\zwbs\gobble\{\}}}}`
        Per indicizzare e scrivere \{ o \} userai \ilbrace e \irbrace rispettivamente.

        Ciao
        Enrico

      • #62899
        Up
        0
        Down
        ::


        Grazie 🙂

        Il comando \comandox funziona, mentre gli altri no 🙁 L’errore che ottengo è un numero di parametro illegale in \gobble. Ovviamente non so metterci le mani.

        Vorrei sapere delle altre cose.

        1.
        \comandox funziona, meglio, va usato per i caratteri che mi hai indicato e solo per quelli perché quelli sono i caratteri che creano problemi a MakeIndex. Corretto?

        2.
        Gli altri due comandi che hai definito vanno usati solo per ottenere in stampa e nell’indice analitico \{ e \}. Giusto?

        3.
        Ora la cosa più importante. Volendo mandare nell’index tutti i comandi che non siano del tipo \looseness, cioè le varie sequenze \#, \\, \, eccetera, qual è il modo corretto di procedere? Si può usare tranquillamente \comando facendo delle prove per vedere se si ottengono errori, oppure è meglio fare altrimenti? E come?

        Perdono per tutte queste domande.

        Ciao
        Tommaso

      • #62900
        Up
        0
        Down
        ::

        illinguista1972″ post=61910Grazie 🙂

        Il comando \comandox funziona, mentre gli altri no 🙁 L’errore che ottengo è un numero di parametro illegale in \gobble. Ovviamente non so metterci le mani.

        Era sbagliata la definizione di \gobble, adesso è giusta.

        illinguista1972″ post=61910
        Vorrei sapere delle altre cose.

        1.
        \comandox funziona, meglio, va usato per i caratteri che mi hai indicato e solo per quelli perché quelli sono i caratteri che creano problemi a MakeIndex. Corretto?

        Giusto.

        illinguista1972″ post=619102.
        Gli altri due comandi che hai definito vanno usati solo per ottenere in stampa e nell’indice analitico \{ e \}. Giusto?

        Giusto.

        illinguista1972″ post=619103.
        Ora la cosa più importante. Volendo mandare nell’index tutti i comandi che non siano del tipo \looseness, cioè le varie sequenze \#, \\, \, eccetera, qual è il modo corretto di procedere? Si può usare tranquillamente \comando facendo delle prove per vedere se si ottengono errori, oppure è meglio fare altrimenti? E come?

        Con \#, \% e \\ non funziona né \comando né \comandox. Anche per questi occorrerebbero comandi appositi; la cosa più semplice è di spezzare, per questi, la stampa e il richiamo per l’indice:
        `\lstinline!\#!\index{#@\texttt{\zwbs\char`\#}}
        \lstinline!\\!\index{“\@\texttt{\zwbs\char`\\}}
        \lstinline!\%!\index{%@\texttt{\zwbs\char`\%}}`
        Non sono molti e mettersi a cincionare con le definizioni solo per coprire questi pochi casi è davvero una perdita di tempo.

        Ciao
        Enrico

      • #62901
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Tommaso,
          Enrico ti ha suggerito cose eccellenti, ma come credi che io mandato nell’indice tutti quei caratteri quando componevo l’ Introduzione?
          Guarda nei file sorgente, che puoi scaricare insieme al documento; ci sono tutte le cose che cerchi; potranno essere più rozze di quelle che ha suggerito Enrico, ma funzionano tutte.

      Visualizzazione 6 filoni di risposte
      • Devi essere connesso per rispondere a questo topic.

      Go to top