- Questo topic ha 7 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 15 anni fa da
OldClaudio.
-
CreatoreTopic
-
26 Agosto 2011 alle 19:59 #62894::
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
-
CreatoreTopic
-
AutoreRisposte
-
-
26 Agosto 2011 alle 20:16 #62895
-
26 Agosto 2011 alle 20:36 #62896::
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.
-
27 Agosto 2011 alle 6:30 #62897::
egreg9″ post=61847Esempio?
Ciao
EnricoPronti. 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
-
28 Agosto 2011 alle 19:30 #62898::
illinguista1972″ post=61862
Esempio?
Ciao
EnricoPronti. 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
-
29 Agosto 2011 alle 7:06 #62899::
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
-
29 Agosto 2011 alle 7:22 #62900::
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
-
29 Agosto 2011 alle 16:34 #62901::
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.
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.