Doppio indice in due lingue

  • Creatore
    Topic
  • #31252
    Up
    0
    Down
    ::


    Devo creare un doppio indice per il mio documento, uno in italiano ed uno in inglese. Avendo scritto tutto in inglese il comando \listofcontents mi crea correttamente l’indice in questa lingua. Ora vorrei creare un indice in italiano ma usando non i titoli originali dei capitoli, delle sezioni, … ma le rispettive traduzioni che potrei mettere come titolo secondario. Come posso fare?
    Posso anche cambiare la parola “Contents” dell’indice in inglese con “Index”?
    Grazie mille per le risposte.

Visualizzazione 8 filoni di risposte
  • Autore
    Risposte
    • #31253
      Up
      0
      Down
      ::

      Devo creare un doppio indice per il mio documento, uno in italiano ed uno in inglese. Avendo scritto tutto in inglese il comando \listofcontents mi crea correttamente l’indice in questa lingua. Ora vorrei creare un indice in italiano ma usando non i titoli originali dei capitoli, delle sezioni, … ma le rispettive traduzioni che potrei mettere come titolo secondario. Come posso fare?
      Posso anche cambiare la parola “Contents” dell’indice in inglese con “Index”?
      Grazie mille per le risposte.

      Copiati il codice seguente in un file che chiamerai dbltoc.sty (da tenere insieme al tuo documento principale):
      `\ProvidesPackage{dbltoc}

      \newif\if@uniquetoc
      \DeclareOption{unique}{\@uniquetoctrue}

      \ProcessOptions\relax

      \RequirePackage{shorttoc}

      \def\secondary@title#1#2{%
      \@namedef{secondary#1}##1{%
      \addcontentsline{toc}{secondary#1}{%
      \ifnum\c@secnumdepth>#2\relax
      \protect\numberline{\csname the#1\endcsname}%
      \fi
      ##1}}%
      }
      \secondary@title{chapter}{-1}
      \secondary@title{section}{0}
      \secondary@title{subsection}{1}
      \secondary@title{subsubsection}{2}
      \secondary@title{paragraph}{3}
      \secondary@title{subparagraph}{4}

      \def\secondaryl@#1{%
      \expandafter\let\csname l@secondary#1\expandafter\endcsname
      \csname l@#1\endcsname}

      \secondaryl@{chapter}
      \secondaryl@{section}
      \secondaryl@{subsection}
      \secondaryl@{subsubsection}
      \secondaryl@{paragraph}
      \secondaryl@{subparagraph}

      \let\@@tableofcontents\tableofcontents
      \def\tableofcontents{%
      \begingroup
      \disable@secondary
      \if@uniquetoc
      \@@tableofcontents
      \else
      \shorttoc{\contentsname}{\value{tocdepth}}%
      \fi
      \endgroup}

      \def\secondarytableofcontents{%
      \if@uniquetoc\else
      \begingroup
      \let\contentsname\secondarycontentsname
      \disable@primary\@@tableofcontents
      \endgroup
      \fi}

      \def\disable@secondary{%
      \let\l@secondarychapter\@gobbletwo
      \let\l@secondarysection\@gobbletwo
      \let\l@secondarysubsection\@gobbletwo
      \let\l@secondarysubsubsection\@gobbletwo
      \let\l@secondaryparagraph\@gobbletwo
      \let\l@secondarysubparagraph\@gobbletwo}

      \def\disable@primary{%
      \let\l@chapter\@gobbletwo
      \let\l@section\@gobbletwo
      \let\l@subsection\@gobbletwo
      \let\l@subsubsection\@gobbletwo
      \let\l@paragraph\@gobbletwo
      \let\l@subparagraph\@gobbletwo}

      \endinput`
      La struttura del tuo file sarà
      `\documentclass[a4paper]{book}

      \usepackage{dbltoc}
      \newcommand{\secondarycontentsname}{Indice}

      \begin{document}
      \frontmatter

      \tableofcontents

      \secondarytableofcontents

      \mainmatter
      \chapter{Here comes the fun}
      \secondarychapter{Adesso ci divertiamo}

      \section{A nice journey}
      \secondarysection{Un bel viaggio}

      \end{document}`
      Se da qualche parte usi \addcontentsline{toc}{chapter}{English text}, aggiungici subito dopo \addcontentsline{toc}{secondarychapter}{Testo in italiano}

      Con \usepackage[unique]{dbltoc} la produzione dell’indice supplementare è soppressa e il comando \secondarytableofcontents non fa nulla.

      Non ti dico come cambiare “Contents” in “Index” perché “index” in inglese non ha nulla a che vedere con l’indice generale.

      Ciao
      Enrico

      NOTA: modificato il file dbltoc.sty rispetto alla prima versione’; corretto anche un errore di stampa.

    • #31254
      Up
      0
      Down
      ::


      Grazie mille per l’aiuto veloce e preciso. Ho provato ad implementare la tua soluzione ma mi da errore sul primo `\addcontentsline{secondarychapter}{Nome italiano}` dicendo

      Runaway argument?
      ! Paragraph ended before \addcontentesline was complete.

      l’errore è incontrato nel seguente file incluso in quello principale
      `\chapter*{Introduzione}
      \markboth{Introduzione}{Introduzione}
      \addcontentsline{toc}{chapter}{Introduzione}
      \addcontentsline{secondarychapter}{Introduction}`

    • #31255
      Up
      0
      Down
      ::

      Grazie mille per l’aiuto veloce e preciso. Ho provato ad implementare la tua soluzione ma mi da errore sul primo `\addcontentsline{secondarychapter}{Nome italiano}` dicendo

      Runaway argument?
      ! Paragraph ended before \addcontentesline was complete.

      l’errore è incontrato nel seguente file incluso in quello principale
      `\chapter*{Introduzione}
      \markboth{Introduzione}{Introduzione}
      \addcontentsline{toc}{chapter}{Introduzione}
      \addcontentsline{secondarychapter}{Introduction}`

      `\addcontentsline{toc}{secondarychapter}{Nome italiano}`
      Ciao
      Enrico

    • #31256
      Up
      0
      Down
      ::


      Sistemata la mia svista funziona tutto alla perfezione per l’indice secondario. Mi rimane solo l’ultimo problemino: sembra che il secondo comando \tabelofcontents nel documento non produca nessun risultato. Si può fare solo una volta per file?

    • #31257
      Up
      0
      Down
      ::

      Sistemata la mia svista funziona tutto alla perfezione per l’indice secondario. Mi rimane solo l’ultimo problemino: sembra che il secondo comando \tabelofcontents nel documento non produca nessun risultato. Si può fare solo una volta per file?

      Quale secondo comando \tableofcontents? Ce n’è uno solo nel mio esempio.

      Ciao
      Enrico

    • #31258
      Up
      0
      Down
      ::


      Nel mio documento devo creare due indici, uno in italiano ed uno in inglese. Qualunque combinazione io provi mi crea sempre solo il primo tra \tableofcontents e \secondarytableofcontents.

    • #31259
      Up
      0
      Down
      ::

      Nel mio documento devo creare due indici, uno in italiano ed uno in inglese. Qualunque combinazione io provi mi crea sempre solo il primo tra \tableofcontents e \secondarytableofcontents.

      `\documentclass[a4paper]{book}
      \usepackage{dbltoc}

      \newcommand{\secondarycontentsname}{Indice}

      \begin{document}
      \frontmatter

      \tableofcontents

      \secondarytableofcontents

      \mainmatter
      \chapter{ABC}
      \secondarychapter{ABC IT}

      \section{DEF}
      \secondarysection{DEF IT}

      \end{document}`
      Se compilo questo ho due indici, esattamente come si voleva; il primo in inglese e il secondo in italiano. Ovviamente non puoi mettere \secondarytableofcontents per primo.

      Vorresti, di grazia, farci capire come hai provato?

      Ciao
      Enrico

    • #31260
      Up
      0
      Down
      ::


      `\documentclass[a4paper, oneside, titlepage, italian]{book}

      \usepackage{dbltoc} %per creare il doppio indice
      \newcommand{\secondarycontentsname}{Indice} %per creare il doppio indice

      \begin{document}

      \selectlanguage{italian}
      \secondarytableofcontents %indice in italiano

      \addcontentsline{toc}{chapter}{Contents}
      \addcontentsline{toc}{secondarychapter}{Contents}
      \selectlanguage{english}
      \tableofcontents %indice in inglese

      \addcontentsline{toc}{chapter}{List of figures}
      \addcontentsline{toc}{secondarychapter}{Elenco delle figure}
      \listoffigures

      \addcontentsline{toc}{chapter}{List of tables}
      \addcontentsline{toc}{secondarychapter}{Elenco delle tabelle}
      \listoftables

      \chapter{My work}
      \secondarychapter{Il mio lavoro}

      \chapter{My life}
      \secondarychapter{La mia vita}

      \end{document}`

    • #31261
      Up
      0
      Down
      ::

      `\documentclass[a4paper, oneside, titlepage, italian]{book}

      \usepackage{dbltoc} %per creare il doppio indice
      \newcommand{\secondarycontentsname}{Indice} %per creare il doppio indice

      \begin{document}

      \selectlanguage{italian}
      \secondarytableofcontents %indice in italiano

      \addcontentsline{toc}{chapter}{Contents}
      \addcontentsline{toc}{secondarychapter}{Contents}
      \selectlanguage{english}
      \tableofcontents %indice in inglese

      \addcontentsline{toc}{chapter}{List of figures}
      \addcontentsline{toc}{secondarychapter}{Elenco delle figure}
      \listoffigures

      \addcontentsline{toc}{chapter}{List of tables}
      \addcontentsline{toc}{secondarychapter}{Elenco delle tabelle}
      \listoftables

      \chapter{My work}
      \secondarychapter{Il mio lavoro}

      \chapter{My life}
      \secondarychapter{La mia vita}

      \end{document}`

      Ora devo proprio perdere le staffe. Come può l’indice in italiano venire prima di quello in inglese?

      Leggi il messaggio precedente, dove ti dico che \secondarytableofcontents va DOPO \tableofcontents. Non era sufficientemente chiaro?

      Poi ridiscutiamo della faccenda, ma prima vorrei essere sicuro che tu abbia capito. Se per caso chi è più in alto pretende l’indice in italiano per primo (che è ridicolo), si deve aggiustare il file dbltoc.sty.

      Ciao
      Enrico

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

Go to top