Re: Problema con MacTeX 2010 e makeindex

#50336
Up
0
Down
::

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

Go to top