Problema con ambiente theindex

  • Creatore
    Topic
  • #67062
    Up
    0
    Down
    ::


    Buon giorno a tutti! Sto scrivendo la mia tesi di laurea magistrale con LaTeX e fino ad ora sono riuscito a risolvere tutti i problemi che ho di volta in volta incontrato grazie alle guide e al forum. Ora invece ho bisogno di un aiuto perché non riesco a capire in quale parte del mio codice sia annidato l’errore. Infatti, quando compilo il file, compare un errore (che credo sia dovuto all’indice analitico) che riporto: “\begin{theindex} on input line 1 ended by \end{multicols}”. Prima di riportare il codice che sto usando segnalo che ho proceduto a ridefinire l’ambiente theindex cercando di attenermi alle indicazioni riportate nella guida “Introduzione all’arte della composizione tipografica con LaTeX” a pag. 321 al fine di riportare, subito sotto il titolo dell’indice analitico, un breve testo di spiegazione dell’indice analitico medesimo.

    Ecco la struttura della mia tesi:
    `
    \documentclass[a4paper,12pt,twoside,titlepage,openright]{book}
    \usepackage[italian]{babel}
    \usepackage[T1]{fontenc}
    \usepackage[latin1]{inputenc}
    \usepackage{indentfirst}
    \usepackage[table,dvipsnames]{xcolor}
    \usepackage{color}
    \usepackage{enumitem}
    \usepackage{longtable}
    \usepackage{booktabs}
    \usepackage{url}
    \usepackage{footnote}
    \usepackage{parallel}
    \usepackage{makeidx}
    \usepackage{footmisc}
    \usepackage{framed}
    \usepackage{verbatim}
    \usepackage{multicol}
    \usepackage{mymacros} %richiama il file mymacros.sty contenente la ridefinizione dell'ambiente theindex
    \usepackage{wrapfig}
    \usepackage{fancyhdr}
    \usepackage{framed}
    \usepackage{tocloft}
    \usepackage{fncychap}
    \usepackage{float}
    \usepackage{array}
    \usepackage{microtype}
    \usepackage{booktabs}
    \usepackage{eso-pic,graphicx}
    \usepackage{pxfonts}
    \linespread{1.05}

    \expandafter\let\csname ps@plain\expandafter\endcsname\csname ps@empty\endcsname %elimina il numero di pagina in ogni pagina iniziale (di capitoli, indici etc.)

    \addto\captionsitalian{\def\indexname{\Large \bf \hfill INDICE ANALITICO\hfill \vspace{-2cm}}}
    \let\orgtheindex\theindex
    \let\orgendtheindex\endtheindex
    \def\theindex{%
    \def\subitem{\par\noindent\parindent=0pt}
    \def\subsubitem{\par\noindent\parindent=0pt}
    \fancyhead{} % cancella tutti i campi
    \fancyhead[CE]{\scriptsize INDICE ANALITICO}
    \fancyhead[CO]{\scriptsize INDICE ANALITICO}
    \fancyhead[LE,RO]{\scriptsize\thepage}%
    \fancyhead[LO,RE]{}
    \fancyfoot[CE]{}%pié di pagina centrato sinistro
    \fancyfoot[CO]{}%pié di pagina centrato destro
    \makeatother
    \def\twocolumn{\begin{multicols}{2}}%
    \def\onecolumn{}%
    \orgtheindex
    }
    \def\endtheindex{%
    \orgendtheindex
    }

    \makeatletter
    \def\cleardoublepage{\clearpage
    \if@twoside
    \ifodd\c@page
    \else
    \null\thispagestyle{empty}\clearpage
    \fi
    \fi}
    \makeatother

    \makeindex

    \begin{document}

    \frontmatter
    \thispagestyle{empty}
    \tableofcontents

    \input{Sigleabbreviazioni}

    \input{Premessa}

    \mainmatter

    \input{capitolo1}
    \input{capitolo2}
    \input{Capitolo3}
    \input{Capitolo4}
    \input{Capitolo5}

    \backmatter
    \cleardoublepage
    \phantomsection
    \printindex

    \end{document}

    %contenuto del file mymacros.sty caricato da \usepackage{mymacros}:

    \renewenvironment{theindex}
    {\if@twocolumn
    \@restonecolfalse
    \else
    \@restonecoltrue
    \fi
    \@makeschapterhead{\indexname}%
    \addcontentsline{toc}{section}{\vspace{0,5cm} \\ \normalsize INDICE ANALITICO}%
    \parindent\z@
    \parskip\z@ \@plus .3\p@\relax
    \columnseprule \z@
    \columnsep 45\p@
    \let\item\@idxitem
    % Testo di spiegazione
    \textit{\hfill (I numeri si riferiscono alle pagine comprensive delle note)\hfill}
    \par
    \vspace{2\baselineskip}%
    \multicols{2}}% Fine comandi di apertura
    {% Inizio comandi di chiusura
    \endmulticols
    \if@restonecol\onecolumn\else\clearpage\fi}

    %contenuto del file classic.ist realizzato secondo le indicazioni dell'Arte:

    headings_flag 1
    heading_prefix “\\textbf\{\\centerline ”
    heading_suffix “\}”
    symhead_positive “Simboli”
    symhead_negative “simboli”
    numhead_positive “Numeri”
    numhead_negative “numeri”
    `

    Ringrazio sin da ora chi vorrà illuminarmi, sperando di essere stato esaustivo e di avere riportato i dati sufficienti per l’elaborazione di una risposta.

    Stefano.

Visualizzazione 5 filoni di risposte
  • Autore
    Risposte
    • #67063
      Up
      0
      Down
      ::

      Stefanouniecons” post=66034Buon giorno a tutti! Sto scrivendo la mia tesi di laurea magistrale con LaTeX e fino ad ora sono riuscito a risolvere tutti i problemi che ho di volta in volta incontrato grazie alle guide e al forum. Ora invece ho bisogno di un aiuto perché non riesco a capire in quale parte del mio codice sia annidato l’errore. Infatti, quando compilo il file, compare un errore (che credo sia dovuto all’indice analitico) che riporto: “\begin{theindex} on input line 1 ended by \end{multicols}”. Prima di riportare il codice che sto usando segnalo che ho proceduto a ridefinire l’ambiente theindex cercando di attenermi alle indicazioni riportate nella guida “Introduzione all’arte della composizione tipografica con LaTeX” a pag. 321 al fine di riportare, subito sotto il titolo dell’indice analitico, un breve testo di spiegazione dell’indice analitico medesimo.

      Ecco la struttura della mia tesi:
      `
      \documentclass[a4paper,12pt,twoside,titlepage,openright]{book}
      \usepackage[italian]{babel}
      \usepackage[T1]{fontenc}
      \usepackage[latin1]{inputenc}
      \usepackage{indentfirst}
      \usepackage[table,dvipsnames]{xcolor}
      \usepackage{color}
      \usepackage{enumitem}
      \usepackage{longtable}
      \usepackage{booktabs}
      \usepackage{url}
      \usepackage{footnote}
      \usepackage{parallel}
      \usepackage{makeidx}
      \usepackage{footmisc}
      \usepackage{framed}
      \usepackage{verbatim}
      \usepackage{multicol}
      \usepackage{mymacros} %richiama il file mymacros.sty contenente la ridefinizione dell'ambiente theindex
      \usepackage{wrapfig}
      \usepackage{fancyhdr}
      \usepackage{framed}
      \usepackage{tocloft}
      \usepackage{fncychap}
      \usepackage{float}
      \usepackage{array}
      \usepackage{microtype}
      \usepackage{booktabs}
      \usepackage{eso-pic,graphicx}
      \usepackage{pxfonts}
      \linespread{1.05}

      \expandafter\let\csname ps@plain\expandafter\endcsname\csname ps@empty\endcsname %elimina il numero di pagina in ogni pagina iniziale (di capitoli, indici etc.)

      \addto\captionsitalian{\def\indexname{\Large \bf \hfill INDICE ANALITICO\hfill \vspace{-2cm}}}
      \let\orgtheindex\theindex
      \let\orgendtheindex\endtheindex
      \def\theindex{%
      \def\subitem{\par\noindent\parindent=0pt}
      \def\subsubitem{\par\noindent\parindent=0pt}
      \fancyhead{} % cancella tutti i campi
      \fancyhead[CE]{\scriptsize INDICE ANALITICO}
      \fancyhead[CO]{\scriptsize INDICE ANALITICO}
      \fancyhead[LE,RO]{\scriptsize\thepage}%
      \fancyhead[LO,RE]{}
      \fancyfoot[CE]{}%pié di pagina centrato sinistro
      \fancyfoot[CO]{}%pié di pagina centrato destro
      \makeatother
      \def\twocolumn{\begin{multicols}{2}}%
      \def\onecolumn{}%
      \orgtheindex
      }
      \def\endtheindex{%
      \orgendtheindex
      }

      \makeatletter
      \def\cleardoublepage{\clearpage
      \if@twoside
      \ifodd\c@page
      \else
      \null\thispagestyle{empty}\clearpage
      \fi
      \fi}
      \makeatother

      \makeindex

      \begin{document}

      \frontmatter
      \thispagestyle{empty}
      \tableofcontents

      \input{Sigleabbreviazioni}

      \input{Premessa}

      \mainmatter

      \input{capitolo1}
      \input{capitolo2}
      \input{Capitolo3}
      \input{Capitolo4}
      \input{Capitolo5}

      \backmatter
      \cleardoublepage
      \phantomsection
      \printindex

      \end{document}

      %contenuto del file mymacros.sty caricato da \usepackage{mymacros}:

      \renewenvironment{theindex}
      {\if@twocolumn
      \@restonecolfalse
      \else
      \@restonecoltrue
      \fi
      \@makeschapterhead{\indexname}%
      \addcontentsline{toc}{section}{\vspace{0,5cm} \\ \normalsize INDICE ANALITICO}%
      \parindent\z@
      \parskip\z@ \@plus .3\p@\relax
      \columnseprule \z@
      \columnsep 45\p@
      \let\item\@idxitem
      % Testo di spiegazione
      \textit{\hfill (I numeri si riferiscono alle pagine comprensive delle note)\hfill}
      \par
      \vspace{2\baselineskip}%
      \multicols{2}}% Fine comandi di apertura
      {% Inizio comandi di chiusura
      \endmulticols
      \if@restonecol\onecolumn\else\clearpage\fi}

      %contenuto del file classic.ist realizzato secondo le indicazioni dell'Arte:

      headings_flag 1
      heading_prefix “\\textbf\{\\centerline ”
      heading_suffix “\}”
      symhead_positive “Simboli”
      symhead_negative “simboli”
      numhead_positive “Numeri”
      numhead_negative “numeri”
      `

      Ringrazio sin da ora chi vorrà illuminarmi, sperando di essere stato esaustivo e di avere riportato i dati sufficienti per l’elaborazione di una risposta.

      Stefano.

      Il rimedio più semplice è di scrivere
      `\usepackage{imakeidx}

      \makeindex[options=-s classic,
      othercode=\def\subitem{\par\noindent}%
      \def\subsubitem{\par\noindent}]`
      e dimenticare le ridefinizioni di \twocolumn, di \theindex e dell’ambiente theindex.

      Certo che, se ridefinisci due volte l’ambiente theindex, vai in cerca di guai.

      Ciao
      Enrico

    • #67064
      Up
      0
      Down
      ::


      Anzitutto grazie mille per la risposta! A questo punto ti chiedo un consiglio: dal momento che il pdf finale non sembra risentire minimamente dell’errore posso lasciar correre l’errore oppure secondo te è comunque il caso di eliminarlo? Te lo chiedo perché avevo raggiunto un risultato a mio avviso molto soddisfacente nella realizzazione dell’indice analitico e cambiare tutto mi spiace un po’!

    • #67065
      Up
      0
      Down
      ::

      Stefanouniecons” post=66044Anzitutto grazie mille per la risposta! A questo punto ti chiedo un consiglio: dal momento che il pdf finale non sembra risentire minimamente dell’errore posso lasciar correre l’errore oppure secondo te è comunque il caso di eliminarlo? Te lo chiedo perché avevo raggiunto un risultato a mio avviso molto soddisfacente nella realizzazione dell’indice analitico e cambiare tutto mi spiace un po’!

      Sei tu il giudice migliore. A me pare che certe bizzarrie del tuo modo di gestire l’ambiente theindex siano sbagliate. Ma se il risultato ti soddisfa, non so che dirti.

      Ciao
      Enrico

    • #67066
      Up
      0
      Down
      ::

      egreg9″ post=66053
      Sei tu il giudice migliore. A me pare che certe bizzarrie del tuo modo di gestire l’ambiente theindex siano sbagliate. Ma se il risultato ti soddisfa, non so che dirti.

      Ciao
      Enrico

      Eh sì guardando il codice in effetti sembra tutto un pochino strano. Avevo l’esigenza di ricreare lo stile dell’indice analitico adottato dai manuali di giurisprudenza del tipo:

      A
      Atti:
      – bilaterali, 3
      – collegiali, 7
      – giuridici, 9 e ss.
      – – efficacia, 19

      e così per tutte le altre voci. Attraverso le guide, il forum e un po’ di immaginazione sono riuscito a comporre l’indice analitico che volevo. Allora se mi dici che l’errore che mi compare non inficia il risultato finale lo terrei così! Comunque voglio davvero farti i miei complimenti Enrico perché senza i consigli che fornisci sul forum difficilmente avrei potuto realizzare la tesi che avevo in mente! Grazie davvero!

      Stefano.

    • #67067
      Up
      0
      Down
      ::


      Hai un comando \begin{multicols}{2} di troppo. Prova a toglierlo: \def\twocolumn{}. Quel codice è davvero terribile.

      Ciao
      Enrico

    • #67068
      Up
      0
      Down
      ::

      egreg9″ post=66063Hai un comando \begin{multicols}{2} di troppo. Prova a toglierlo: \def\twocolumn{}. Quel codice è davvero terribile.

      Ciao
      Enrico

      Ho eliminato \begin{multicols}{2}, ma il messaggio di errore rimane. Il codice:

      `
      \def\twocolumn{}%
      \def\onecolumn{}%
      \orgtheindex
      }
      \def\endtheindex{%
      \orgendtheindex
      }`

      l’ho preso dalla guida LaTeX per l’impaziente a pagina 109, al fine di bilanciare le colonne dell’indice analitico.

      Stefano

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

Go to top