Bibliografia ordinata

  • Creatore
    Topic
  • #16055
    Up
    0
    Down
    ::


    Salve a tutti,

    Ho cercato di trovare la risposta al mio quesito, ma mi pare non ci sia, se c’e’ chiedo venia.
    Dunque, sto usando the bibliography (non bibtex), e mi piacerebbe ordinare i titoli in bibliografia a seconda del tipo di appartenenza (libri, riviste, articoli, etc…). Cioe’ vorrei avere una sezione (non un \bibtem) che viene letto come testo, qualcosa del genere:

    LIBRI

    [1] Nervi Pier Luigi, Costruire correttamente, Hoepli, Milano, 1955
    [2]…,…,…,…,…

    ARTICOLI

    [3] Pallo Pinco, qwerty oggi, Casabella, 56, 1939,

    Si puo’ fare?

    Grazie degli eventuali consigli,

    A.

Visualizzazione 15 filoni di risposte
  • Autore
    Risposte
    • #16056
      Up
      0
      Down
      ::

      Salve a tutti,

      Ho cercato di trovare la risposta al mio quesito, ma mi pare non ci sia, se c’e’ chiedo venia.
      Dunque, sto usando the bibliography (non bibtex), e mi piacerebbe ordinare i titoli in bibliografia a seconda del tipo di appartenenza (libri, riviste, articoli, etc…). Cioe’ vorrei avere una sezione (non un \bibtem) che viene letto come testo, qualcosa del genere:

      LIBRI

      [1] Nervi Pier Luigi, Costruire correttamente, Hoepli, Milano, 1955
      [2]…,…,…,…,…

      ARTICOLI

      [3] Pallo Pinco, qwerty oggi, Casabella, 56, 1939,

      Si puo’ fare?

      Grazie degli eventuali consigli,

      Ammettiamo che usi la classe book, nella quale la bibliografia è un capitolo. Un’occhiata a book.cls mostra che il contatore usato per numerare gli elementi della bibliografia è “enumiv”. Quindi dobbiamo portarci dietro il suo valore a ogni parte successiva, se vogliamo che la numerazione prosegua. Inoltre vogliamo che ogni ambiente thebibliography usato inizi una sezione. Ecco qua:
      `\newcommand{\keepenumiv}{0}
      \newenvironment{thebibchapter}
      {\chapter*{\bibname}\let\chapter\section}{}
      \newenvironment{thebibsection}[2]
      {\renewcommand{\bibname}{#1}%
      \begin{thebibliography}{#2}\setcounter{enumiv}{\keepenumiv}}
      {\xdef\keepenumiv{\arabic{enumiv}}\end{thebibliography}}`
      Adesso puoi scrivere
      `\begin{thebibchapter}
      \begin{thebibsection}{Libri}{9}
      \bibitem{nervi55} Pier Luigi Nervi, Costruire correttamente, Hoepli, Milano, 1955

      \bibitem{pippo99} …
      \end{thebibsection}

      \begin{thebibsection}{Articoli}{9}
      \bibitem{Pinco39} Pallo Pinco, qwerty oggi, Casabella, 56, 1939,

      \bibitem{pluto00} …
      \end{thebibsection}
      \end{thebibchapter}`
      All’interno di thebibchapter il comando \chapter vale \section; l’ambiente thebibliography, richiamato da ciascun thebibsection, emette un comando \chapter*{\bibname} che diventerà come \section*{#1}, in virtù della ridefinizione locale di \bibname a #1. Il secondo argomento di thebibsection è come l’unico di thebibliography, per il corretto allineamento dei numeri di riferimento.

      Particolare TeXnico degno di nota: per portar dietro il valore ultimo di enumiv, uso \xdef, che significa “definizione globale con espansione”: quindi \arabic{enumiv} viene espanso al valore attuale di enumiv in cifre, per poi essere usato dall’ambiente thebibsection successivo tramite la macro \keepenumiv.

      Ciao
      Enrico

    • #16057
      Up
      0
      Down
      ::


      Enrico,

      Grazie mille. La tua affascinante spiegazione e’ molto tecnica, troppo purtroppo, per un novizio come me…
      Sono certo che le mie sono domande banalissime, e che denotano un procedere empirico, ma vorrei capire meglio cosa devo fare. Dunque,

      la striga:

      \newcommand{\keepenumiv}{0}
      \newenvironment{thebibchapter}
      {\chapter*{\bibname}\let\chapter\section}{}
      \newenvironment{thebibsection}[2]
      {\renewcommand{\bibname}{#1}%
      \begin{thebibliography}{#2}\setcounter{enumiv}{\keepenumiv}}
      {\xdef\keepenumiv{\arabic{enumiv}}\end{thebibliography}}

      va inserita nel preambolo? SENZA cambiare nient’altro? (Cioe’ lascio
      \include{Bibliography})

      La seconda stringa:

      \begin{thebibchapter}
      \begin{thebibsection}{Libri}{9}
      \bibitem{nervi55} Pier Luigi Nervi, Costruire correttamente, Hoepli, Milano, 1955

      \bibitem{pippo99} …
      \end{thebibsection}

      \begin{thebibsection}{Articoli}{9}
      \bibitem{Pinco39} Pallo Pinco, qwerty oggi, Casabella, 56, 1939,

      \bibitem{pluto00} …
      \end{thebibsection}
      \end{thebibchapter}

      Va inserita nel ‘capitolo’ bibliography? Se si, dove?

      Ti ringrazio per la pazienza,

      A.

    • #16058
      Up
      0
      Down
      ::


      Ah, dimenticavo, uso la classe {report}.

      A.

    • #16059
      Up
      0
      Down
      ::

      Enrico,

      Grazie mille. La tua affascinante spiegazione e’ molto tecnica, troppo purtroppo, per un novizio come me…

      Non sei l’unico che legge la risposta, almeno spero. 🙂

      Sono certo che le mie sono domande banalissime, e che denotano un procedere empirico, ma vorrei capire meglio cosa devo fare. Dunque,

      la stringa:
      `\newcommand{\keepenumiv}{0}

      {\xdef\keepenumiv{\arabic{enumiv}}\end{thebibliography}}`
      va inserita nel preambolo? SENZA cambiare nient’altro? (Cioe’ lascio
      \include{Bibliography})

      Sì. Visto che usi report va bene allo stesso modo.

      La seconda stringa:
      `\begin{thebibchapter}
      \begin{thebibsection}{Libri}{9}
      \bibitem{nervi55} Pier Luigi Nervi, Costruire correttamente, Hoepli, Milano, 1955

      \bibitem{pippo99} …
      \end{thebibsection}

      \begin{thebibsection}{Articoli}{9}
      \bibitem{Pinco39} Pallo Pinco, qwerty oggi, Casabella, 56, 1939,

      \bibitem{pluto00} …
      \end{thebibsection}
      \end{thebibchapter}`
      va inserita nel ‘capitolo’ bibliography? Se si, dove?

      Devi scrivere il file della bibliografia secondo quello schema: all’inizio \begin{thebibchapter} (dove avresti \begin{thebibliography}{}); subito dopo \begin{thebibsection}{Libri}{} e i vari \bibitem relativi. Poi \end{thebibsection} e di nuovo \begin{thebibsection}{Articoli}{} e i \bibitem relativi. Se non hai altre sezioni della bibliografia, \end{thebibsection} seguito da \end{thebibchapter}.

      Mi raccomando: thebibchapter sostituisce thebibliography. Il fatto che la bibliografia sia contenuta in un file esterno che richiami con \include è irrilevante. Ma ti conviene usare sempre \input.

      Qui denota l’argomento per allineare correttamente: di solito, per un numero di elementi della bibliografia fra 1 e 9 si usa 9, fra 10 e 99 si usa 99, ma va bene un qualsiasi numero a una o due cifre rispettivamente.

      Ciao
      Enrico

    • #16060
      lorenzo.pantieri
      Partecipante
        Up
        0
        Down
        ::

        Non sei l’unico che legge la risposta, almeno spero. 🙂

        Immagini giusto! Ci avevo provato anch’io, mi era venuta in mente l’idea di spulciare il file article.cls (l’utente Apollodoro non aveva ancora detto la classe usata) per vedere quale contatore venisse impiegato da thebibliography, e avevo trovato enumiv. Poi mi sono accorto che questo contatore viene azzerato ogni volta che viene chiamato thebibliography, per cui ho pensato di introdurne un altro per memorizzare l’ultimo valore. Il mio codice “naive”:

        `\renewcommand{\refname}{Libri suggeriti}

        \begin{thebibliography}{9}
        \bibitem…
        \bibitem…
        \newcounter{myCounter}
        \setcounter{myCounter}{\theenumiv}
        \end{thebibliography}

        \renewcommand{\refname}{Articoli suggeriti}

        \begin{thebibliography}{9}
        \setcounter{enumiv}{\themyCounter}
        \bibitem…
        \bibitem…
        \end{thebibliography}
        `
        Fa sorridere (e conterrà sicuramente errori), lo so! 😳 😳 😳

        Ciao,
        L.

      • #16061
        Up
        0
        Down
        ::

        Non sei l’unico che legge la risposta, almeno spero. 🙂

        Immagini giusto! Ci avevo provato anch’io, mi era venuta in mente l’idea di spulciare il file article.cls per vedere quale contatore venisse usato da thebibliography, e avevo trovato enumiv. Poi mi sono accorto che questo contatore viene azzerato ogni volta che viene chiamato thebibliography, per cui ho pensato di introdurne un altro per memorizzare l’ultimo valore. Il mio codice “naive”:
        `\renewcommand{\refname}{Libri suggeriti}

        \begin{thebibliography}{9}
        \bibitem…
        \bibitem…
        \newcounter{myCounter}
        \setcounter{myCounter}{\theenumiv}
        \end{thebibliography}

        \renewcommand{\refname}{Articoli suggeriti}

        \begin{thebibliography}{9}
        \setcounter{enumiv}{\themyCounter}
        \bibitem…
        \bibitem…
        \end{thebibliography}`
        Fa sorridere (e conterrà sicuramente errori), lo so! 😳 😳 😳

        Il mio è certamente migliore. 😉

        L’unico vero errore è quello di mettere la definizione del nuovo contatore nell’ambiente, mentre va fatto una volta per tutte nel preambolo. Non è necessario, come hai visto. Inoltre, definirsi un ambiente che inglobi tutte le parti della bibliografia rende le ridefinizioni di \refname (va bene per article e amsart) o \bibname (report, book o amsbook) locali. Tanto vale allora definirsi un sottoambiente che faccia tutto il lavoro, dando il titolo come argomento.

        L’uso di \theenumiv è lecito, perché in tutte queste classi l’ambiente thebibliography lo ridefinisce come \arabic{enumiv}. Ma, per evitare problemi, è meglio usare esplicitamente \arabic{enumiv} che non dipende da questa ridefinizione, oppure \number\value{enumiv} che non dipende nemmeno dalla definizione di \arabic.

        L’altro errore è usare “naive”: in italiano si usa di più l’originale francese, “naif” o, se si vuole essere pedanti, “naïf”. 🙂

        Ciao
        Enrico

      • #16062
        lorenzo.pantieri
        Partecipante
          Up
          0
          Down
          ::

          Il mio è certamente migliore. 😉

          😆 😆 😆 😉

          Caro Enrico ti ringrazio per la spiegazione (e per l’appunto su naif!), come sempre impeccabile.

          Ciao,
          Lorenzo

        • #16063
          Up
          0
          Down
          ::


          Carissimi,

          ho fatto (credo) quanto suggerito, il pdf nonostante gli errori si compila.
          Pero’, il titolo del capitolo (bibliografia) e’ trattato come testo normale (non in grassetto e non a dimesione maggiore), e non viene ordinato numericamente.
          Vi copio gli errori:

          Dove erro?

          Grazie ancora,

          M.

          bibchapter.tex(2): Error: ! LaTeX Error: Environment thebibchapter undefined.
          bibchapter.tex(4): Error: ! LaTeX Error: Environment thebibsection undefined.
          bibchapter.tex(7): Error: ! LaTeX Error: Lonely \item–perhaps a missing list environment.
          bibchapter.tex(7): Underfull \hbox (badness 10000) detected at line 7
          bibchapter.tex(7): Error: ! Undefined control sequence.
          bibchapter.tex(7): Error: ! You can’t use `\relax’ after \the.
          bibchapter.tex(9): Error: ! LaTeX Error: Lonely \item–perhaps a missing list environment.
          bibchapter.tex(9): Underfull \hbox (badness 10000) detected at line 9
          bibchapter.tex(9): Error: ! Undefined control sequence.
          bibchapter.tex(9): Error: ! You can’t use `\relax’ after \the.
          bibchapter.tex(11): Error: ! LaTeX Error: \begin{document} ended by \end{thebibsection}.
          bibchapter.tex(13): Error: ! LaTeX Error: Environment thebibsection undefined.
          bibchapter.tex(15): Error: ! LaTeX Error: Lonely \item–perhaps a missing list environment.
          bibchapter.tex(15): Underfull \hbox (badness 10000) detected at line 15
          bibchapter.tex(15): Error: ! Undefined control sequence.
          bibchapter.tex(15): Error: ! You can’t use `\relax’ after \the.
          bibchapter.tex(17): Error: ! LaTeX Error: Lonely \item–perhaps a missing list environment.
          bibchapter.tex(17): Underfull \hbox (badness 10000) detected at line 17
          bibchapter.tex(17): Error: ! Undefined control sequence.
          bibchapter.tex(17): Error: ! You can’t use `\relax’ after \the.
          bibchapter.tex(18): Error: ! LaTeX Error: \begin{document} ended by \end{thebibsection}.
          bibchapter.tex(20): Error: ! LaTeX Error: \begin{document} ended by \end{thebibchapter}.

        • #16064
          Up
          0
          Down
          ::

          Carissimi,

          ho fatto (credo) quanto suggerito, il pdf nonostante gli errori si compila.
          Pero’, il titolo del capitolo (bibliografia) e’ trattato come testo normale (non in grassetto e non a dimesione maggiore), e non viene ordinato numericamente.
          Vi copio gli errori:

          Dove erro?

          Questo è lo schema di documento
          `\documentclass[a4paper]{report}
          \usepackage[italian]{babel}
          %%% Qui avrai i tuoi altri pacchetti %%%

          %%% Adesso inserisco il codice per la tua bibliografia %%%
          \newcommand{\keepenumiv}{0}
          \newenvironment{thebibchapter}
          {\chapter*{\bibname}\let\chapter\section}{}
          \newenvironment{thebibsection}[2]
          {\renewcommand{\bibname}{#1}%
          \begin{thebibliography}{#2}\setcounter{enumiv}{\keepenumiv}}
          {\xdef\keepenumiv{\arabic{enumiv}}\end{thebibliography}}
          %%% Fine del codice per la bibliografia %%%

          \begin{document}

          \title{Un documento}
          \author{Apollodoro}
          \maketitle

          Blah blah

          \begin{thebibchapter}
          \begin{thebibsection}{Libri}{9}
          \bibitem{nervi1955} Pier Luigi Nervi, Costruire correttamente, Hoepli, Milano, 1955

          \bibitem{michel1546} Michelangelo Buonarroti, Come si progetta la cupola di S. Pietro in Vaticano, 1546
          \end{thebibsection}

          \begin{thebibsection}{Articoli}{9}
          \bibitem{Pinco39} Pallo Pinco, qwerty oggi, Casabella, 56, 1939,

          \bibitem{Caio07} Tizio Caio, Abitare nei tuguri, Casabrutta, 48, 2007
          \end{thebibsection}
          \end{thebibchapter}
          \end{document}`
          Adesso è più chiaro? Se vuoi, puoi mettere tutta la parte da \begin{thebibchapter}
          a \end{thebibchapter} in un file a parte, diciamo “bibliografia.tex” e al posto di ciò che hai scritto là puoi scrivere \input{bibliografia}.

          Ciao
          Enrico

        • #16065
          Up
          0
          Down
          ::


          Molto, ma molto meglio.

          Grazie mille davvero,

          A.

          PS ho l’impressione, e la speranza, che il problema non avesse una soluzione proprio banale, questo considerando il numero di messaggi di chi mi ha risposto.

        • #16066
          Up
          0
          Down
          ::

          Molto, ma molto meglio.

          Grazie mille davvero,

          A.

          PS ho l’impressione, e la speranza, che il problema non avesse una soluzione proprio banale, questo considerando il numero di messaggi di chi mi ha risposto.

          Non era banale, no. Ci sono alcuni pacchetti che fanno cose analoghe: compactbib e splitbib, ma non proprio come chiedevi tu. Altri richiedono di usare BibTeX.

          Se hai bisogno di compilare l’indice, il codice che ho scritto potrebbe richiedere qualche modifica. Facci sapere.

          Ciao
          Enrico

        • #16067
          Up
          0
          Down
          ::


          Visto che ci sono, approfitto per l’ultima volta della vostra gentilezza.
          Premetto che cosi’ come viene compilato il mio file va benissimo (compreso l’indice). Ma, per pura curiosita’ vi chiedo: e’ possibile inserire manualmente un diverso codice di riferimento al posto della lista numerata della bibliografia ? Un po’ come fa automaticamente Bibtex, per intenderci.

          Cioe’, invece di

          [1] Cognome Nome, titolo, editore, anno

          avere

          [Cognome anno] Cognome Nome, titolo, editore, anno

          Grazie,

          A.

        • #16068
          Up
          0
          Down
          ::

          Visto che ci sono, approfitto per l’ultima volta della vostra gentilezza.
          Premetto che cosi’ come viene compilato il mio file va benissimo (compreso l’indice). Ma, per pura curiosita’ vi chiedo: e’ possibile inserire manualmente un diverso codice di riferimento al posto della lista numerata della bibliografia ? Un po’ come fa automaticamente Bibtex, per intenderci.

          Cioe’, invece di

          [1] Cognome Nome, titolo, editore, anno

          avere

          [Cognome anno] Cognome Nome, titolo, editore, anno

          Grazie,

          A.

          \bibitem[Cognome anno]

          Ma ti verranno male i riferimenti; per il sistema autore-data il pacchetto da usare è natbib in combinazione con BibTeX.

          Ciao
          Enrico

        • #16069
          Up
          0
          Down
          ::


          Enrico,

          grazie della pronta risposta. Mi sono spiegato male; intendevo chiedere se fosse possible avere un codice di riferimento alternativo alla numerazione, tanto nella bibliografia quanto nelle citazioni della stessa nel testo. Cioe’ avere [Cognome anno] (o [Cognome.x]) sia nell’elenco bibliografico, sia nella referenza a [Cognome anno].
          So che l’elenco numerato e’ chiaro, purtroppo combatto con una supervisor che mi consiglia di usare Word…

          Grazie,

          A.

        • #16070
          Up
          0
          Down
          ::

          Enrico,

          grazie della pronta risposta. Mi sono spiegato male; intendevo chiedere se fosse possible avere un codice di riferimento alternativo alla numerazione, tanto nella bibliografia quanto nelle citazioni della stessa nel testo. Cioe’ avere [Cognome anno] (o [Cognome.x]) sia nell’elenco bibliografico, sia nella referenza a [Cognome anno].
          So che l’elenco numerato e’ chiaro, purtroppo combatto con una supervisor che mi consiglia di usare Word…

          Usa \bibitem[Nervi~1955]{nervi1955} e simili nella parte della bibliografia. Così \cite{nervi1955} produrrà [Nervi 1955] e la stessa etichetta andrà nella bibliografia.

          Ciao
          Enrico

        • #16071
          Up
          0
          Down
          ::


          Enrico,

          Grazie ancora, tutto chiaro.

          A.

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

      Go to top