- Questo topic ha 12 risposte, 4 partecipanti ed è stato aggiornato l'ultima volta 15 anni, 11 mesi fa da
egreg9.
-
CreatoreTopic
-
22 Settembre 2010 alle 16:24 #50324::
Ciao a tutti. Per generare l’indice analitico, ero solito dare da Terminale il comando
`makeindex -s classic /Users/Lorenzo/Documents/Documenti_LaTeX/ArteLaTeX/ArteLaTeX
`
(classic.ist è il file di stile spiegato nell’Arte). Aveva sempre funzionato. Ora però non va:
`makeindex: Not writing to /Users/Lorenzo/Documents/Documenti_LaTeX/ArteLaTeX/ArteLaTeX.ind (openout_any = p).
Can't create output index file /Users/Lorenzo/Documents/Documenti_LaTeX/ArteLaTeX/ArteLaTeX.ind.
Usage: makeindex [-ilqrcgLT] [-s sty] [-o ind] [-t log] [-p num] [idx0 idx1 …]
host:~ Lorenzo$ makeindex -s classic /Users/Lorenzo/Documents/Documenti_LaTeX/ArteLaTeX/ArteLaTeX
`
Che succede?Grazie,
L.
-
CreatoreTopic
-
AutoreRisposte
-
-
22 Settembre 2010 alle 16:44 #50325
-
22 Settembre 2010 alle 18:07 #50326::
Ciao a tutti. Per generare l’indice analitico, ero solito dare da Terminale il comando
`makeindex -s classic /Users/Lorenzo/Documents/Documenti_LaTeX/ArteLaTeX/ArteLaTeX
`
(classic.ist è il file di stile spiegato nell’Arte). Aveva sempre funzionato. Ora però non va:
`makeindex: Not writing to /Users/Lorenzo/Documents/Documenti_LaTeX/ArteLaTeX/ArteLaTeX.ind (openout_any = p).
Can't create output index file /Users/Lorenzo/Documents/Documenti_LaTeX/ArteLaTeX/ArteLaTeX.ind.
Usage: makeindex [-ilqrcgLT] [-s sty] [-o ind] [-t log] [-p num] [idx0 idx1 …]
host:~ Lorenzo$ makeindex -s classic /Users/Lorenzo/Documents/Documenti_LaTeX/ArteLaTeX/ArteLaTeX
`
Che succede?Grazie,
L.Te lo dice makeindex: (openout_any=p) significa che il programma rispetta l’opzione “p” (paranoid) per la scrittura su file specificati con un percorso assoluto. Volendo adattare makeindex alla “restricted shell”, questo comportamento è obbligatorio per ragioni di sicurezza. Perché non usi il pacchetto imakeidx (di due noti autori) che ti solleva perfino dall’incomodo di chiamare makeindex? 🙂
Ciao
Enrico
-
22 Settembre 2010 alle 19:47 #50327
-
22 Settembre 2010 alle 19:52 #50328::
Perché non usi il pacchetto imakeidx (di due noti autori) che ti solleva perfino dall’incomodo di chiamare makeindex? 🙂
Giacché i due noti autori ci leggono segnalo che a pagina 2 della documentazione del pacchetto c’è scritto
in order to use the makeindex sorting an formatting engine
Accidenti! Dovremo mandare la versione 1.0b al più presto, altrimenti chissà che succede! 😀
Grazie.
Ciao
Enrico
-
22 Settembre 2010 alle 20:03 #50329::
[quote]Perché non usi il pacchetto imakeidx (di due noti autori) che ti solleva perfino dall’incomodo di chiamare makeindex? 🙂
Giacché i due noti autori ci leggono segnalo che a pagina 2 della documentazione del pacchetto c’è scritto
in order to use the makeindex sorting an formatting engine
Accidenti! Dovremo mandare la versione 1.0b al più presto, altrimenti chissà che succede! 😀
Grazie.
Ciao
Enrico[/quote]
Ho segnalato con la massima urgenza appena ho rilevato l’erroraccio, prima che succedessero disastri 😀Ok, chiudo qui l’off-topic 🙂
-
23 Settembre 2010 alle 8:07 #50330::
hai provato col percorso relativo invece che assoluto? magari direttamente dalla cartella col file.
Ho provato e ora funziona. Con la MacTeX 2009, però, funzionava anche il percorso assoluto. Come minimo, Tommaso e io dovremmo aggiungere questa precisazione nella revisione dell’Arte di ottobre.
Quanto a imakeidx, ne ignoravo l’esistenza. 😳 Spero che riusciremo a trovare il tempo per provarlo e per consigliarlo nella nuova Arte, al posto di makeidx.
Ciao,
L.
-
23 Settembre 2010 alle 8:26 #50331::
hai provato col percorso relativo invece che assoluto? magari direttamente dalla cartella col file.
Ho provato e ora funziona. Con la MacTeX 2009, però, funzionava anche il percorso assoluto. Come minimo, Tommaso e io dovremmo aggiungere questa precisazione nella revisione dell’Arte di ottobre.
Quanto a imakeidx, ne ignoravo l’esistenza. 😳 Spero che riusciremo a trovare il tempo per provarlo e per consigliarlo nella nuova Arte, al posto di makeidx.
Ciao,
L.l’inibizione alla scrittura fuori dall’albero locale e’ stata introdotta proprio con texlive 2010.
e’ una sicurezza necessaria, c’e’ poco da fare.
-
23 Settembre 2010 alle 8:39 #50332::
hai provato col percorso relativo invece che assoluto? magari direttamente dalla cartella col file.
Ho provato e ora funziona. Con la MacTeX 2009, però, funzionava anche il percorso assoluto. Come minimo, Tommaso e io dovremmo aggiungere questa precisazione nella revisione dell’Arte di ottobre.
La mia spiegazione di ieri forse è stata troppo frettolosa. Vediamo di ampliare.
Una delle novità di TeX Live 2010 è la “restricted shell escape” (uscita ristretta verso la linea di comando) che per esempio permette di usare il pacchetto epstopdf per convertire automaticamente gli EPS in PDF quando li si vuole inserire con \includegraphics. È “ristretta” perché solo pochi programmi esterni possono essere fatti andare durante una compilazione TeX: bibtex, bibtex8, kpsewhich, makeindex e repstopdf. Quest’ultimo è proprio quello che serve per la conversione degli EPS in PDF.
La funzionalità era stata prevista per la 2009, ma problemi dell’ultimo momento legati alla sicurezza l’hanno rinviata. Qual è il problema fondamentale? I programmi abilitati scrivono su nuovi file e permettere di scrivere in luoghi arbitrari può essere un problema molto serio: ti inviano un file da compilare che scrive qualcosa in /tmp, l’attaccante aspetta che tu lo faccia e usa il file per scopi facilmente intuibili. Non che sia facile, ma il rischio c’è. Perciò i programmi abilitati possono solo scrivere in cartelle sottostanti quella di lavoro, con percorsi che devono essere relativi. Quindi
`cd ~/miacartella
makeindex pippo`
funziona se il file pippo.idx sta in “miacartella”, ma
`cd ~/miacartella
makeindex /Users/Pippo/miacartella/pippo`
non funziona, anche se il file su cui dovrebbe agire makeindex è lo stesso. Se si lancia makeindex tramite il menù di TeXShop o di qualsiasi altro front-end (TeXworks o Aquamacs in Mac OS X, analoghi su altri sistemi operativi) non ci sono problemi, perché i processi vengono lanciati su file dati con percorso relativo.Può essere seccante, ma è il prezzo da pagare alla sicurezza. Direi che non è un vero problema.
Quanto a imakeidx, ne ignoravo l’esistenza. 😳 Spero che riusciremo a trovare il tempo per provarlo e per consigliarlo nella nuova Arte, al posto di makeidx.
Come puoi vedere dalla documentazione, non solo compila automaticamente l’indice analitico (funzione che si può anche disabilitare, volendo), ma gestisce indici multipli e anche con numeri di colonne diversi l’uno dall’altro.
Non l’ho provato con ClassicThesis, se devo dire la verità, ma penso che funzioni. Il caso semplice è di un solo indice a due colonne, supponiamo con stile di indice classic.ist:
`\usepackage{imakeidx}
\makeindex[options=-s classic]`
Ciao
Enrico
-
23 Settembre 2010 alle 9:07 #50333::
Non l’ho provato con ClassicThesis, se devo dire la verità, ma penso che funzioni. Il caso semplice è di un solo indice a due colonne, supponiamo con stile di indice classic.ist:
`\usepackage{imakeidx}
\makeindex[options=-s classic]`Allora Enrico, ho appena provato a compilare l’Arte mettendo
`\usepackage{imakeidx}
\makeindex[options=-s classic]`
al posto di
`\usepackage{makeidx}
\makeindex`
Ricevo un errrore (alla prima compilazione con LaTeX):
`! LaTeX Error: \begin{theindex} on input line 1 ended by \end{multicols}.`
L’indice analtico lo produco così:
`\manualmark
\markboth{\spacedlowsmallcaps{\indexname}}{\spacedlowsmallcaps{\indexname}}
\phantomsection
\addcontentsline{toc}{chapter}{\tocEntry{\indexname}}
\printindex`
Dove sbaglio?Ciao,
L.P.S. le colonne dell’indice analitico prodotto con classic.ist vengono bilanciate. Eppure nei miei sorgenti non trovo traccia del codice
`\let\orgtheindex\theindex
\let\orgendtheindex\endtheindex
\def\theindex{%
\def\twocolumn{\begin{multicols}{2}}%
\def\onecolumn{}%
\clearpage
\orgtheindex
}
\def\endtheindex{%
\end{multicols}%
\orgendtheindex
}`
che avevo letto essere necessario per farlo.Sogno o son desto? 😯
-
23 Settembre 2010 alle 10:22 #50334::
Non l’ho provato con ClassicThesis, se devo dire la verità, ma penso che funzioni. Il caso semplice è di un solo indice a due colonne, supponiamo con stile di indice classic.ist:
`\usepackage{imakeidx}
\makeindex[options=-s classic]`Allora Enrico, ho appena provato a compilare l’Arte mettendo
`\usepackage{imakeidx}
\makeindex[options=-s classic]`
al posto di
`\usepackage{makeidx}
\makeindex`
Ricevo un errrore (alla prima compilazione con LaTeX):
`! LaTeX Error: \begin{theindex} on input line 1 ended by \end{multicols}.`
L’indice analtico lo produco così:
`\manualmark
\markboth{\spacedlowsmallcaps{\indexname}}{\spacedlowsmallcaps{\indexname}}
\phantomsection
\addcontentsline{toc}{chapter}{\tocEntry{\indexname}}
\printindex`
Dove sbaglio?Ciao,
L.P.S. le colonne dell’indice analitico prodotto con classic.ist vengono bilanciate. Eppure nei miei sorgenti non trovo traccia del codice
`\let\orgtheindex\theindex
\let\orgendtheindex\endtheindex
\def\theindex{%
\def\twocolumn{\begin{multicols}{2}}%
\def\onecolumn{}%
\clearpage
\orgtheindex
}
\def\endtheindex{%
\end{multicols}%
\orgendtheindex
}`
che avevo letto essere necessario per farlo.Sogno o son desto? 😯
1. Con un esempio minimo non ho quell’errore.
2. Ottieni la funzionalità che ti serve con
`\usepackage{imakeidx}
\makeindex[options=-s classic]
\indexsetup{headers={\spacedlowsmallcaps{\indexname}}{\spacedlowsmallcaps{\indexname}}}`
nel preambolo e
`\manualmark
\phantomsection
\addcontentsline{toc}{chapter}{\tocEntry{\indexname}}
\printindex`
nel documento. In generale basterebbe l’opzione “intoc” a \makeindex; ma nel tuo caso hai bisogno di una particolare forma dell’annotazione per l’indice, quindi occorre un \addcontentsline esplicito (e va evitata l’opzione “intoc”).Il pacchetto imakeidx ridefinisce l’ambiente theindex in modo che le colonne dell’ultima pagina siano bilanciate. 8)
Ciao
Enrico
-
23 Settembre 2010 alle 10:45 #50335::
Indovina un po’. La colpa è di ArsClassica. 😳Il seguente
`\documentclass{scrreprt}\usepackage{multicol}
\usepackage{imakeidx}\makeindex[options=-s classic]
\usepackage{classicthesis-ldpkg}
\usepackage{classicthesis}
\usepackage[italian]{arsclassica}\begin{document}
Prova\index{prova}\cleardoublepage
\manualmark
\markboth{\spacedlowsmallcaps{\indexname}}{\spacedlowsmallcaps{\indexname}}
\phantomsection
\addcontentsline{toc}{chapter}{\tocEntry{\indexname}}
\printindex
\end{document}`
produce l’errore.Basta togliere queste righe da ArsClassica
`%************************************************************
% The index
%************************************************************
\@ifpackageloaded{makeidx}
{%
\RequirePackage{multicol}
\let\orgtheindex\theindex
\let\orgendtheindex\endtheindex
\def\theindex{%
\def\twocolumn{\begin{multicols}{2}}%
\def\onecolumn{}%
\clearpage
\orgtheindex}
\def\endtheindex{%
\end{multicols}%
\orgendtheindex}
\makeindex
}
{\relax}`
e tutto fila lascio. Appena ho un secondo aggiorno il pacchetto.Grazie,
L.
-
23 Settembre 2010 alle 11:10 #50336::
Indovina un po’. La colpa è di ArsClassica. 😳
Il seguente
`\documentclass{scrreprt}\usepackage{multicol}
\usepackage{imakeidx}\makeindex[options=-s classic]
\usepackage{classicthesis-ldpkg}
\usepackage{classicthesis}
\usepackage[italian]{arsclassica}\begin{document}
Prova\index{prova}\cleardoublepage
\manualmark
\markboth{\spacedlowsmallcaps{\indexname}}{\spacedlowsmallcaps{\indexname}}
\phantomsection
\addcontentsline{toc}{chapter}{\tocEntry{\indexname}}
\printindex
\end{document}`
produce l’errore.Basta togliere queste righe da ArsClassica
`%************************************************************
% The index
%************************************************************
\@ifpackageloaded{makeidx}
{%
\RequirePackage{multicol}
\let\orgtheindex\theindex
\let\orgendtheindex\endtheindex
\def\theindex{%
\def\twocolumn{\begin{multicols}{2}}%
\def\onecolumn{}%
\clearpage
\orgtheindex}
\def\endtheindex{%
\end{multicols}%
\orgendtheindex}
\makeindex
}
{\relax}`
e tutto fila lascio. Appena ho un secondo aggiorno il pacchetto.Grazie,
L.Basta caricare imakeidx dopo arsclassica, la ridefinizione non avrà più effetto. Se cancellassi quella ridefinizione faresti un danno a chi continua a usare makeidx. Puoi fare così:
`\@ifpackageloaded{makeidx}
{\@ifpackageloaded{imakeidx}{}
{%
\RequirePackage{multicol}
\let\orgtheindex\theindex
\let\orgendtheindex\endtheindex
\def\theindex{%
\def\twocolumn{\begin{multicols}{2}}%
\def\onecolumn{}%
\clearpage
\orgtheindex}
\def\endtheindex{%
\end{multicols}%
\orgendtheindex}
\makeindex}%
}{}`
Oppure, per non perderti nelle graffe:
`\@tempswatrue
\@ifpackageloaded{makeidx}{\@ifpackageloaded{imakeidx}{\@tempswafalse}{}}{}
\if@tempswa
\RequirePackage{multicol}
\let\orgtheindex\theindex
\let\orgendtheindex\endtheindex
\def\theindex{%
\def\twocolumn{\begin{multicols}{2}}%
\def\onecolumn{}%
\clearpage
\orgtheindex}
\def\endtheindex{%
\end{multicols}%
\orgendtheindex}
\makeindex
\fi`
Questo perché dopo \usepackage{imakeidx} LaTeX si comporta come se fosse caricato anche makeidx (per motivi interni che hanno a che fare con l’interazione con hyperref, ma soprattutto per evitare che qualcuno carichi makeidx dopo imakeidx).Ciao
Enrico
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.