toc in un unico paragrafo

  • Creatore
    Topic
  • #70072
    Up
    0
    Down
    ::


    Per un documento di classe article, mi è richiesta una tavola dei contenuti “compatta”, cioè in un unico paragrafo. Deve recare il titolo “Sommario” in maiuscoletto all’inizio del paragrafo, seguito dai due punti; deve omettere il numero di pagina delle varie sezioni e sottosezioni, e presentare invece solo il numero delle sezioni e sottosezioni; il separatore dev’essere costituito da “. — ” (cioè una lineetta dopo il punto); il tutto in carattere footnotesize e all’interno di margini più ampi (tipo un ambiente quoting) rispetto al corpo del documento.

    Il risultato finale dovrebbe assomigliare ad una cosa del genere:

    SOMMARIO: 1. Titolo prima sezione. — 1.1. Titolo prima sottosezione. — 1.2. Titolo seconda sottosezione. — 2. Titolo seconda sezione. — 2.1 Titolo primaseconda sottosezione. — 2.2. Titolo secondaseconda sottosezione. 3. Titolo terza sezione.

    Ho letto la documentazione del pacchetto titletoc. Evidentemente senza capirne la logica. Infatti, questo codice

    `\documentclass[12pt,a4paper]{article}
    \usepackage[utf8]{inputenc}
    \usepackage[italian]{babel}
    \usepackage{amsmath}
    \usepackage{amsfonts}
    \usepackage{amssymb}
    \usepackage{makeidx}
    \usepackage{graphicx}
    \usepackage{lipsum}

    \usepackage{titletoc}%
    \setcounter{tocdepth}{3}%

    \titlecontents*{section}[30pt]
    {\footnotesize }
    {\thecontentslabel. }
    {}{}
    [. — ][.]

    \titlecontents*{subsection}[30pt]
    {\footnotesize }
    {\thecontentslabel. }
    {}{}
    [. — ][.]

    \titlecontents*{subsubsection}[30pt]
    {\footnotesize }
    {\thecontentslabel. }
    {}{}
    [. — ][.]

    \author{Un tipo sommario}
    \title{Prove di sommario}

    \begin{document}
    \maketitle
    \tableofcontents
    \section{Titolo della Sezione}
    \lipsum[1]
    \subsection{Titolo della Sottosezione}
    \lipsum[1]
    \subsection{Titolo della Sottosezione}
    \lipsum[1]
    \subsubsection{Ed ecco una Sottosottosezione}
    \lipsum[1]
    \subsubsection{Un'altra Sottosottosezione}
    \lipsum[1]
    \subsubsection{Ed ancora un'altra Sottosottosezione}
    \lipsum[1]

    \section{Titolo della Sezione}
    \lipsum[1]
    \subsection{Titolo della Sottosezione}
    \lipsum[1]
    \subsubsection{Titolo della Sottosottosezione}
    \lipsum[1]
    \subsubsection{Un'altra Sottosottosezione}
    \lipsum[1]
    \subsubsection{Ed ancora un'altra Sottosottosezione}
    \lipsum[1]

    \end{document}`

    mi restituisce una serie di imprecisioni: non inserisce il separatore quando dovrebbe, moltiplica i punti finali, il testo non è perfettamente giustificato. (Da parte la questione della formattazione di “Sommario”, che non mi sono ancora posto.)

    Dove sto sbagliando?
    Grazie
    Carlo

Visualizzazione 7 filoni di risposte
  • Autore
    Risposte
    • #70073
      lorenzo.pantieri
      Partecipante
        Up
        0
        Down
        ::


        Hai provato a dare un’occhiata alla documentazione del pacchetto tocloft?

      • #70074
        Up
        0
        Down
        ::


        Il separatore viene inserito sempre tra sezioni dello stesso tipo, quindi non viene messo passando (per esempio) da una section a una subsection. Siccome subsection e subsubsection sono necessariamente precedute da una sezione di livello superiore, si può fare così:
        `\titlecontents*{section}[30pt]{\footnotesize }
        {\thecontentslabel. }{}
        {.}
        [ — ]

        \titlecontents*{subsection}[30pt]{\footnotesize }
        { — \thecontentslabel. }{}
        {.}

        \titlecontents*{subsubsection}[30pt]{\footnotesize }
        { — \thecontentslabel. }{}
        {.}`

        Ciao,
        Antonio

      • #70075
        Up
        0
        Down
        ::

        antonio.macrì” post=69337Il separatore viene inserito sempre tra sezioni dello stesso tipo, quindi non viene messo passando (per esempio) da una section a una subsection.

        Questo è un dettaglio importante. Ma l’hai appreso dalla documentazione del pacchetto? Te lo chiedo perché, in generale, — ma forse sono io che dormo in piedi — la documentazione di titletoc non mi sembra proprio chiarissima.

        Con la tua soluzione, funziona tutto perfettamente: grazie.

        Carlo

      • #70076
        Up
        0
        Down
        ::

        furbenzio” post=69338

        Il separatore viene inserito sempre tra sezioni dello stesso tipo, quindi non viene messo passando (per esempio) da una section a una subsection.

        Questo è un dettaglio importante. Ma l’hai appreso dalla documentazione del pacchetto?

        No, 🙂 me ne sono accorto con qualche esperimento. Guarda per esempio cosa produce questo codice:
        `\documentclass[12pt,a4paper]{article}
        \usepackage[utf8]{inputenc}
        \usepackage[italian]{babel}
        \usepackage{lipsum}
        \usepackage{titletoc}
        \setcounter{tocdepth}{3}

        \titlecontents*{section}[30pt]{\footnotesize }
        {\thecontentslabel. }{}
        {.}
        [$\bigg\{$][$\bigg|$][$\bigg\}$]

        \titlecontents*{subsection}[30pt]{\footnotesize }
        {\thecontentslabel. }{}
        {.}
        [{$\big[$}][$\big|$][{$\big]$}]

        \titlecontents*{subsubsection}[30pt]{\footnotesize }
        {\thecontentslabel. }{}
        {.}
        [$($][$|$][$)$]

        \author{Un tipo sommario}
        \title{Prove di sommario}

        \begin{document}
        \maketitle
        \tableofcontents
        \section{Sezione}
        \lipsum[1]
        \subsection{Sottosezione}
        \lipsum[1]
        \subsection{Sottosezione}
        \lipsum[1]
        \subsubsection{Sottosottosezione}
        \lipsum[1]
        \subsubsection{Sottosottosezione}
        \lipsum[1]
        \subsubsection{Sottosottosezione}
        \lipsum[1]

        \section{Sezione}
        \lipsum[1]
        \subsection{Sottosezione}
        \lipsum[1]
        \subsubsection{Sottosottosezione}
        \lipsum[1]
        \subsubsection{Sottosottosezione}
        \lipsum[1]
        \subsubsection{Sottosottosezione}
        \lipsum[1]

        \end{document}`

        Puoi notare che le voci sono prodotte in maniera “gerarchica”, per così dire.

      • #70077
        Up
        0
        Down
        ::


        Alzo bandiera bianca anche sull’elemento “Sommario”.
        Dovrei incorporarlo, senza soluzione di continuità, nello stesso paragrafo della tavola dei contenuti, che ora grazie ad Antonio è formattata secondo le richieste.
        Ho provato con titlesec, ma non ci riesco. Cioè: ottengo “troppo”. Infatti, il seguente codice

        `\documentclass[12pt,a4paper]{article}
        \usepackage[utf8]{inputenc}
        \usepackage[italian]{babel}
        \usepackage{lipsum}

        \addto\captionsitalian{\renewcommand{\contentsname}{Sommario:}}

        \usepackage{titletoc}
        \titlecontents*{section}[30pt]{\footnotesize }
        {\thecontentslabel. }{}
        {.}
        [ — ]
        \titlecontents*{subsection}[30pt]{\footnotesize }
        { — \thecontentslabel. }{}
        {.}
        \titlecontents*{subsubsection}[30pt]{\footnotesize }
        { — \thecontentslabel. }{}
        {.}

        \usepackage{titlesec}
        \titleformat{\section}[runin]
        {\normalfont\scshape}
        {}{0pt}{}
        \titlespacing{\section}
        {\parindent}{*2}{\wordsep}

        \title{Prove di sommario}

        \begin{document}
        \maketitle
        \tableofcontents

        \section{Titolo della Sezione}
        \lipsum[1]
        \subsection{Titolo della Sottosezione}
        \lipsum[1]
        \subsection{Titolo della Sottosezione}
        \lipsum[1]
        \subsubsection{Sottosottosezione}
        \lipsum[1]
        \subsubsection{Un'altra Sottosottosezione}
        \lipsum[1]
        \subsubsection{Ed ancora un'altra Sottosottosezione}
        \lipsum[1]

        \section{Titolo della Sezione}
        \lipsum[1]
        \subsection{Titolo della Sottosezione}
        \lipsum[1]
        \subsubsection{Titolo della Sottosezione}
        \lipsum[1]
        \subsubsection{Un'altra Sottosottosezione}
        \lipsum[1]
        \subsubsection{Ed ancora un'altra Sottosottosezione}
        \lipsum[1]

        \end{document}`

        mi restituisce il risultato sperato ma, com’è logico che sia, lo estende indiscriminatamente a tutti i titoli di sezione del documento. Come faccio con titlesec a definire secondo le mie necessità soltanto il titolo della tavola dei contenuti? E’ possibile dosare l’opzione [runin] in modo che non operi per i titoli di sezione?

        Altrimenti dovrei forse ricorrere al pacchetto tocloft. Ho fatto prove su prove con il comando \cftaftertoctitle ma nemmeno così riesco ad ottenere il risultato desiderato.

        Grazie per l’aiuto.

        Ciao
        Carlo

      • #70078
        Up
        0
        Down
        ::


        Non serve titlesectocloft e puoi anche evitare di ridefinire [tt]\contentsname[/tt].

        `\makeatletter
        \renewcommand\tableofcontents{%
        \begingroup
        \par\noindent\footnotesize\textsc{Sommario:}%
        \@starttoc{toc}%
        \endgroup}
        \let\ttl@contentsstretch\relax
        \makeatother`

        Messa così sembra facile, ma stavolta niente documentazione né esperimenti: c’è stato bisogno di leggere il codice (e non è nemmeno stato facile :)).

        Ciao,
        Antonio

      • #70079
        Up
        0
        Down
        ::


        Ti ringrazio tantissimo! Non ce l’avrei mai fatta. Ora non mi resta che scrivere l’articolo..

      • #70080
        Up
        0
        Down
        ::


        Oops! Ho fatto una piccola modifica al codice: avevo dimenticato di racchiudere il [tt]\footnotesize[/tt] dentro un gruppo. 😉

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

    Go to top