- Questo topic ha 13 risposte, 4 partecipanti ed è stato aggiornato l'ultima volta 18 anni, 9 mesi fa da
michele24.
-
CreatoreTopic
-
24 Gennaio 2007 alle 18:20 #12240::
Salve ragazzi,
questa è una domandona per esperti. Dato che non ho voglia di usare tanti pacchetti vorrei avere un comando per l’indice funzionasse in questo modo:
la prima volta mette in neretto la parola e la mette nell’indice
la seconda volta che la uso la metta in corsivo e la mette nell’indice.Ho provato a smanettare sopra il codice, che si ridefinisce da solo, in questo topic http://www.guit.sssup.it/phpbb/viewtopic.php?t=604 che va benissimo per gli acronimi. Ma le mie conoscenze in latex in questo caso sono troppo scarse…qualcuno sa come crearlo un codice del genere? 🙄
-
CreatoreTopic
-
AutoreRisposte
-
-
25 Gennaio 2007 alle 0:19 #12241::
Salve ragazzi,
questa è una domandona per esperti. Dato che non ho voglia di usare tanti pacchetti vorrei avere un comando per l’indice funzionasse in questo modo:
la prima volta mette in neretto la parola e la mette nell’indice
la seconda volta che la uso la metta in corsivo e la mette nell’indice.Ho provato a smanettare sopra il codice, che si ridefinisce da solo, in questo topic http://www.guit.sssup.it/phpbb/viewtopic.php?t=604 che va benissimo per gli acronimi. Ma le mie conoscenze in latex in questo caso sono troppo scarse…qualcuno sa come crearlo un codice del genere? 🙄
`\makeatletter
\newcommand{\defspecialword}[1]{%
\expandafter\gdef\csname sp@word#1\endcsname{%
\textbf{#1}\index{#1}%
\expandafter\gdef\csname sp@word#1\endcsname{\textit{#1}\index{#1}}}}
\newcommand{\spword}[1]{\@nameuse{sp@word#1}}
\makeatother`
Userai \defspecialword nel preambolo, per esempio, \defspecialword{Pippo}; poi, nel documento, userai \spword{Pippo}.Ciao
Enrico
-
25 Gennaio 2007 alle 10:52 #12242
-
26 Gennaio 2007 alle 12:37 #12243
-
27 Gennaio 2007 alle 11:53 #12244::
Cioè perché agisco in questo modo?
Beh perché la prima volta che introduco un concetto voglio che si veda chiaramente con un bel neretto, quando certe volte lo ripeto in altri contesti voglio che si veda lo stesso chiaramente ma con qualcosa di meno pesante quindi con il corsivo. Così si notano le parole chiave subito…era questa la risposta che intendevi?
-
29 Gennaio 2007 alle 12:07 #12245::
Cioè perché agisco in questo modo?
Beh perché la prima volta che introduco un concetto voglio che si veda chiaramente con un bel neretto, quando certe volte lo ripeto in altri contesti voglio che si veda lo stesso chiaramente ma con qualcosa di meno pesante quindi con il corsivo. Così si notano le parole chiave subito…era questa la risposta che intendevi?Sì, comunque non preoccuparti, è stato un errore mio: essendo a digiuno di indici analitici, mi ero dimenticato (proprio da un punto di vista «logico») che è possibile ripetere quante volte si vuole il comando «\index» con lo stesso termine, in modo da tener traccia di tutte le pagine in cui esso compare.
Per qualche ragione, mi ero convinto che il comando «\index» lo si chiamasse una e una sola volta (per termine), e quindi non mi pareva sensato che tu volessi il termine in neretto alla prima composizione e in corsivo dalla seconda in poi. Tanto sarebbe valso farlo direttamente in corsivo, no? 🙄
Ripeto: errore mio. E grazie per la spiegazione.
-
8 Aprile 2007 alle 12:55 #12246::
Risollevo un’attimo questo topic da me iniziato. Quel codice che mi era stato dato mi è servito tantissimo. Però mi sono accorto di una pecca. Mi spiego meglio con un esempio:vorrei che prendesse una parola chiave e anche un suo sinonimo (per esempio “tabella” e “tabelle”). Infatti ogni volta che mi trovo davanti al plurale della mia parola chiave \spword non posso usarlo perché, ovviamente, non riconosce che sto parlando della stessa cosa. Ora so che questa cosa si può fare con index ma quel codice che mi è stato dato non so come modificarlo…
Grazie
PS come vedete lavoro anche a Pasqua…anzi buone vacanze a tutti
-
8 Aprile 2007 alle 14:03 #12247::
Risollevo un’attimo questo topic da me iniziato. Quel codice che mi era stato dato mi è servito tantissimo. Però mi sono accorto di una pecca. Mi spiego meglio con un esempio:
vorrei che prendesse una parola chiave e anche un suo sinonimo (per esempio “tabella” e “tabelle”). Infatti ogni volta che mi trovo davanti al plurale della mia parola chiave \spword non posso usarlo perché, ovviamente, non riconosce che sto parlando della stessa cosa. Ora so che questa cosa si può fare con index ma quel codice che mi è stato dato non so come modificarlo…
Grazie
PS come vedete lavoro anche a Pasqua…anzi buone vacanze a tutti
Aggiungi, dopo la definizione di \defspecialword, sempre fra \makeatletter e \makeatother, il codice seguente:
`\newcommand{\defspecialsyn}[2]{%
\expandafter\gdef\csname sp@word#1\endcsname{%
\textit{#1}\index{#2}}}`
Dato un termine (per esempio, tabella), elencherai anche i suoi “sinonimi”:
`\defspecialword{tabella}
\defspecialsyn{tabelle}{tabella}
\defspecialsyn{Tabella}{tabella}
\defspecialsyn{Tabelle}{tabella}`
e poi lavorerai come prima: dando \spword{tabelle}, nel testo verrà scritto “tabelle” in corsivo e sarà indicizzato come “tabella”. Sarà compito tuo far apparire per primo il termine principale (visto che lo vuoi in nero).Dopo un lauto pranzo pasquale, una breve sosta al computer ci vuole. 🙂
Ciao
Enrico
-
9 Dicembre 2007 alle 19:10 #12248::
risollevo il topic, sempre domandona per esperti:non so perché, ma da quando uso la codifica utf8 sotto linux (kubuntu, kile, texlive-full)
`\makeatletter
\newcommand{\defspecialword}[1]{%
\expandafter\gdef\csname sp@word#1\endcsname{%
\textbf{#1}\index{#1}%
\expandafter\gdef\csname sp@word#1\endcsname{\textit{#1}\index{#1}}}}\newcommand{\spword}[1]{\@nameuse{sp@word#1}}
\newcommand{\defspecialsyn}[2]{%
\expandafter\gdef\csname sp@word#1\endcsname{%
\textit{#1}\index{#2}}}\makeatother
\defspecialword{cecità}`
non funziona con i caratteri accentati! Infatti mi da il seguente errore:
`
[PDFLaTeX] prova.tex => prova.pdf (pdflatex)
[PDFLaTeX] finished with exit status 1
./prova.tex:75:Missing \endcsname inserted. \defspecialword{cecità}
./prova.tex:75:Missing \begin{document}. \defspecialword{cecità}
./prova.tex:75:Extra \endcsname. \defspecialword{cecità}
[PDFLaTeX] 3 errors, 0 warnings, 0 badboxes`Tutto invece fila liscio se uso \’letteradaaccentare…
sia per defspecialword che per spword…La mia ignoranza in questo caso è abissale dato che di quel codice capisco l’1%…non saprei dove mettere mano 😳
-
9 Dicembre 2007 alle 22:30 #12249
-
10 Dicembre 2007 alle 9:52 #12250::
risollevo il topic, sempre domandona per esperti:
non so perché, ma da quando uso la codifica utf8 sotto linux (kubuntu, kile, texlive-full)
`\makeatletter
\newcommand{\defspecialword}[1]{%
\expandafter\gdef\csname sp@word#1\endcsname{%
\textbf{#1}\index{#1}%
\expandafter\gdef\csname sp@word#1\endcsname{\textit{#1}\index{#1}}}}\newcommand{\spword}[1]{\@nameuse{sp@word#1}}
\newcommand{\defspecialsyn}[2]{%
\expandafter\gdef\csname sp@word#1\endcsname{%
\textit{#1}\index{#2}}}\makeatother
\defspecialword{cecità}`
non funziona con i caratteri accentati! Infatti mi da il seguente errore:
`
[PDFLaTeX] prova.tex => prova.pdf (pdflatex)
[PDFLaTeX] finished with exit status 1
./prova.tex:75:Missing \endcsname inserted. \defspecialword{cecità}
./prova.tex:75:Missing \begin{document}. \defspecialword{cecità}
./prova.tex:75:Extra \endcsname. \defspecialword{cecità}
[PDFLaTeX] 3 errors, 0 warnings, 0 badboxes`Tutto invece fila liscio se uso \’letteradaaccentare…
sia per defspecialword che per spword…La mia ignoranza in questo caso è abissale dato che di quel codice capisco l’1%…non saprei dove mettere mano 😳
Temo che sia un compito molto arduo riuscire nell’impresa di far digerire a TeX un modo corretto di interpretare UTF8.
Come funziona UTF8? Alcuni caratteri sono codificati con un byte, altri con due e altri ancora con tre. Per esempio, “à” è codificato come “C3 A0” (indico il numero esadecimale). L’opzione utf8 a inputenc lavora così: rende “attivo” il carattere “C3” (che quindi si comporta come una macro) e lo definisce come un comando con un argomento; in base all’argomento (cioè al carattere che segue), userà l’azione opportuna.
Viceversa, quando l’opzione T1 del pacchetto fontenc è attiva, una combinazione come \`a viene tradotta in un solo carattere, che rende felice LaTeX, se il carattere accentato è presente nella tabella dei font in codifica T1 (quindi non per gli accenti più esoterici).
Attendiamo fiduciosi luaTeX, che permetterà l’input diretto di Unicode e la traduzione in fase di input di UTF8 in Unicode.
Il mio consiglio è di continuare con Latin 1.
Ciao
Enrico
-
10 Dicembre 2007 alle 9:56 #12251
-
10 Dicembre 2007 alle 10:07 #12252::
Mi inserisco nella discussione, non riesco a capire la logica del comando, Prof potresti per favore chiarire come è stato definito?
`\makeatletter
\newcommand{\defspecialword}[1]{%
\expandafter\gdef\csname sp@word#1\endcsname{%
\textbf{#1}\index{#1}%
\expandafter\gdef\csname sp@word#1\endcsname{\textit{#1}\index{#1}}}}\newcommand{\spword}[1]{\@nameuse{sp@word#1}}
\makeatother`
Quando scrivo \defspecialword{parola}, viene definito il comando
`\sp@wordparola`
che ha il seguente effetto: la prima volta che viene usato scrive “parola” in neretto e inserisce un richiamo a “parola” per l’indice analitico; inoltre questo comando ridefinisce sé stesso cosicché, le volte successive che verrà usato, scriverà “parola” in corsivo e inserirà il richiamo a “parola” per l’indice analitico.Il comando \sp@wordparola non va usato direttamente, ma tramite \spword{parola}.
Per definire \sp@wordparola, uso il trucco di \csname…\endcsname; un modo più LaTeX sarebbe stato di scrivere, invece di \expandafter\gdef\csname sp@word#1\endcsname,
`\global\@namedef{sp@word#1}`
Ciao
Enrico
-
10 Dicembre 2007 alle 11:10 #12253
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.