[RISOLTO] Riferimenti ai paragrafi

  • Creatore
    Topic
  • #52608
    Up
    0
    Down
    ::


    Ciao a tutti, provo a fare una domanda anche se temo che prenderò una tirata di orecchie. 😀

    Sto lavorando su un documento di classe book, ogni capitolo e ogni paragrafo sono in file separati.

    Avrei l’esigenza di fare dei riferimenti da un paragrafo ad un’altro, mi spiego: nel paragrafo \section{pippo} vorrei riferirmi al paragrafo \section{pluto}, e fino a qui niente di strano, quello che vorrei evitare è di inserire tutte le label, quindi vorrei sapere se c’è un modo per farlo. Oppure se esiste un comando che mi restituisca il nome del paragrafo in modo da poter creare automaticamente le label, cioè se per esempio il comando “thisectioname” chiamato all’interno della section “pippo” restituisse il valore “pippo” potrei creare le label così: \label{thisectioname} e inserendo il comando in una macro potrei evitare di dover modificare tutti i paragrafi a mano.

    Grazie a tutti.

Visualizzazione 7 filoni di risposte
  • Autore
    Risposte
    • #52609
      Up
      0
      Down
      ::

      Ciao a tutti, provo a fare una domanda anche se temo che prenderò una tirata di orecchie. 😀

      Sto lavorando su un documento di classe book, ogni capitolo e ogni paragrafo sono in file separati.

      Irrilevante.

      Avrei l’esigenza di fare dei riferimenti da un paragrafo ad un’altro, mi spiego: nel paragrafo \section{pippo} vorrei riferirmi al paragrafo \section{pluto}, e fino a qui niente di strano, quello che vorrei evitare è di inserire tutte le label, quindi vorrei sapere se c’è un modo per farlo. Oppure se esiste un comando che mi restituisca il nome del paragrafo in modo da poter creare automaticamente le label, cioè se per esempio il comando “thisectioname” chiamato all’interno della section “pippo” restituisse il valore “pippo” potrei creare le label così: \label{thisectioname} e inserendo il comando in una macro potrei evitare di dover modificare tutti i paragrafi a mano.

      E naturalmente devi anche ricordarti tutti i titoli dei paragrafi.
      `\section{Preliminari alla tetratricotomia}
      Bla bla

      \section{Tetratricotomia applicata}
      Come visto nel paragrafo~\ref{Preliminari alla tetratricotomia} …`
      Mi pare fuori discussione.

      Non credo che tu abbia migliaia di comandi \section e \subsection da etichettare. Usa etichette “intelligenti” e vedrai che il lavoro ti si facilita.

      Ciao
      Enrico

    • #52610
      Up
      0
      Down
      ::


      Quindi non esiste una variabile leggibile che memorizzi il titolo dei paragrafi? Od un comando che sia in grado di leggere tali titoli?

      Cioè mi stai dicendo che non c’è proprio alternativa alle label?

      Grazie

    • #52611
      Up
      0
      Down
      ::


      Si potrebbe spostare la conversazione sull’editor. Cioè se tu utilizzassi, ad esempio, Emacs+AUCTeX+RefTeX quando vai a creare una label RefTeX ti suggerisce automaticamente un nome derivato dal titolo del capitolo/sezione/paragrafo quindi la cosa diventerebbe molto più veloce senza bisogno di comandi particolari.

      Ciao
      Fra

    • #52612
      Up
      0
      Down
      ::


      Io uso TeXnicCenter….

    • #52613
      Up
      0
      Down
      ::

      Quindi non esiste una variabile leggibile che memorizzi il titolo dei paragrafi? Od un comando che sia in grado di leggere tali titoli?

      Cioè mi stai dicendo che non c’è proprio alternativa alle label?

      No, solo che non lo trovo conveniente perché obbliga a inserire titoli di paragrafo che potrebbero essere molto lunghi.
      `\documentclass[a4paper]{book}
      \usepackage{etoolbox}
      \makeatletter
      \apptocmd{\@chapter}{\expandafter\label\expandafter{\unexpanded{#2}}}{}{}
      \apptocmd{\@sect}{\expandafter\label\expandafter{\unexpanded{#8}}}{}{}
      \makeatother

      \usepackage{hyperref}

      \begin{document}
      \mainmatter
      \chapter{Pippo}

      \section{Tetrapiloctomia applicata}
      Ecco il riferimento a un capitolo:~\ref{Pippo}

      \section{Altre tetratomie}

      Questo a un paragrafo:~\ref{Tetrapiloctomia applicata}

      Due spazi non contano:~\ref{Tetrapiloctomia applicata}

      \end{document}`
      Hai però una lieve 🙂 limitazione: niente caratteri accentati nei titoli di paragrafi e capitoli. Forse con qualche trucco alla Oberdiek si può ovviare all’inconveniente; ho seri dubbi che alla fine si ottenga qualcosa di efficiente, se anche si riuscisse.

      Ciao
      Enrico

    • #52614
      Up
      0
      Down
      ::

      `\documentclass[a4paper]{book}
      \usepackage{etoolbox}
      \makeatletter
      \apptocmd{\@chapter}{\expandafter\label\expandafter{\unexpanded{#2}}}{}{}
      \apptocmd{\@sect}{\expandafter\label\expandafter{\unexpanded{#8}}}{}{}
      \makeatother

      \usepackage{hyperref}

      \begin{document}
      \mainmatter
      \chapter{Pippo}

      \section{Tetrapiloctomia applicata}
      Ecco il riferimento a un capitolo:~\ref{Pippo}

      \section{Altre tetratomie}

      Questo a un paragrafo:~\ref{Tetrapiloctomia applicata}

      Due spazi non contano:~\ref{Tetrapiloctomia applicata}

      \end{document}`

      Oh mamma!!! 😯

      Detto questo caro Enrico non so se ti ricordi ma stiamo sempre parlando del ricettario, e il mio intento è quello di potersi riferire ad una ricetta in un’altra ricetta. Siccome, per comodità, darei alla label lo stesso argomento della section mi sembrerebbe stupido fare il lavoro “a mano”.

      Grazie

    • #52615
      Up
      0
      Down
      ::

      `\documentclass[a4paper]{book}
      \usepackage{etoolbox}
      \makeatletter
      \apptocmd{\@chapter}{\expandafter\label\expandafter{\unexpanded{#2}}}{}{}
      \apptocmd{\@sect}{\expandafter\label\expandafter{\unexpanded{#8}}}{}{}
      \makeatother

      \usepackage{hyperref}

      \begin{document}
      \mainmatter
      \chapter{Pippo}

      \section{Tetrapiloctomia applicata}
      Ecco il riferimento a un capitolo:~\ref{Pippo}

      \section{Altre tetratomie}

      Questo a un paragrafo:~\ref{Tetrapiloctomia applicata}

      Due spazi non contano:~\ref{Tetrapiloctomia applicata}

      \end{document}`

      Oh mamma!!! 😯

      Detto questo caro Enrico non so se ti ricordi ma stiamo sempre parlando del ricettario, e il mio intento è quello di potersi riferire ad una ricetta in un’altra ricetta. Siccome, per comodità, darei alla label lo stesso argomento della section mi sembrerebbe stupido fare il lavoro “a mano”.

      Il problema sono i caratteri accentati. Se tu usassi un ambiente completamente Unicode (XeLaTeX o LuaLaTeX) non sarebbe un problema, con (pdf)LaTeX lo è.

      Con quei compilatori ti basterebbe
      `\makeatletter
      \let\@@@chapter\chapter
      \let\@@@section\section
      \def\chapter{\afterassignment\do@chapter\toks@}
      \def\section{\afterassignment\do@section\toks@}
      \def\do@chapter{\@@@chapter{\the\toks@}%
      \expandafter\label\expandafter{\the\toks@}}
      \def\do@section{\@@@section{\the\toks@}%
      \expandafter\label\expandafter{\the\toks@}}
      \makeatother`
      ammesso che tu usi sempre \chapter{titolo} e \section{titolo}. Altrimenti occorre qualcosa di più.

      Ciao
      Enrico

    • #52616
      Up
      0
      Down
      ::


      Enrico, come al solito, grazie, alla fine mi sono arreso ad inserire le label.

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

Go to top