BibLaTeX: sopprimere publisher di testi pubb. prima del 1900

  • Creatore
    Topic
  • #84257
    Alb
      Up
      0
      Down
      ::


      Ciao a tutti,

      sto formattando un articolo secondo le indicazioni di una rivista. Per le citazioni uso BibLaTeX, lo stile biblatex-verbose e come backend uso Biber 1.5. Per uniformare le mie citazioni allo stile della rivista, dovrei stampare il nome della casa editrice per i testi pubblicati dal 1900 in poi, ma non per quelli pubblicati prima del 1900. Le citazioni a cui mi riferisco sono quelle nelle note a pié, non i riferimenti bibliografici nella bibliografia.

      È possibile sopprimere il campo “publisher” per le voci relative a opere pubblicate prima del 1900?

      Presumo che si tratti di usare qualcosa come

      \AtEveryCitekey{%
      \clearlist{publisher}%
      }

      ed usare un’espressione condizionale per applicare il clearlist solo alle voci bibliografiche il cui campo “year” o “date” è inferiore a 1900. Ma non ho idea di come si scriva e non sono riuscito a trovare esempi modificabili su internet.

      Un’alternativa sarebbe modificare il file .bib, ma preferirei evitarlo perché per altri lavori devo usare quelle stesse voci con l’indicazione della casa editrice.

      Grazie dell’aiuto
      Alberto

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


        Ecco un bellissimo esempio per comprendere le potenzialità di biber:

        `\DeclareSourcemap{
        \maps[datatype=bibtex]{
        \map{
        \step[fieldsource=date, match=\regexp{([^2][^9]\d{2})},final]
        \step[fieldset=publisher, null]
        }
        }
        }`

        Il comando cerca nel campo “date” l’espressione regolare data in argomento a \regex,
        ovvero qualcosa che inizia con un numero che non sia “2” (per escludere le pubblicazioni dal 2000);
        seguito da un numero che non sia no “9” (per escludere le pubblicazioni dal dal 1900).
        Dopo le prime due cifre seguono due numeri qualsiasi (\d{2}).
        Il secondo \step individua il campo publisher (fieldset) e lo cancella (null).

        Con le espressioni regolari si può fare sicuramente di meglio.
        Per esempio bisognerebbe affinare il codice per le date della forma: “1850-1864”,
        ma per questi casi si può semplicemente aggiungere uno \step con la data specifica:
        `\step[fieldsource=date, match=\regexp{1850-1864},final] `
        Avanti i maghi delle espressioni regolari!

        Ciao
        Ivan

      • #84259
        Alb
          Up
          0
          Down
          ::


          Ciao Ivan, grazie del suggerimento.

          Ho provato il codice con il file qui sotto e non mi funziona: sia per l’opera pubblicata nel 1985 che per quella pubblicata nel 1800 viene stampato il publisher. Devo cambiare qualcosa?
          `\begin{filecontents*}{biblio.bib}
          @COLLECTION
          {uno,
          editor = “{di Giovanni}, George and Harris, H. S.”,
          title = “Between Kant and Hegel”,
          address = “Albany, New York”,
          publisher = “State University of New York Press”,
          date = “1985”}

          @COLLECTION
          {due,
          editor = “Crusoe, Robinson”,
          title = “Titolo”,
          address = “Oxford”,
          publisher = “Oxford University Press”,
          date = “1800”}
          \end{filecontents*}{biblio.bib}

          \documentclass{article}
          \usepackage[T1]{fontenc}
          \usepackage[utf8]{inputenc}
          \usepackage[italian,english]{babel}
          \usepackage[babel]{csquotes}
          \usepackage[style=philosophy-verbose]{biblatex}

          \DeclareSourcemap{
          \maps[datatype=bibtex]{
          \map{
          \step[fieldsource=date, match=\regexp{([^2][^9]\d{2})},final]
          \step[fieldset=publisher, null]
          }
          }
          }

          \addbibresource{biblio.bib}

          \begin{document}

          \footcite{uno}

          \footcite{due}

          \end{document}`
          Grazie
          Alberto

        • #84260
          Up
          0
          Down
          ::


          A me invece funziona. Io però ho biber 1.6 e penso proprio che il motivo stia lì.
          Vai qui:
          `http://sourceforge.net/projects/biblatex-biber/files/biblatex-biber/development/binaries/`
          scarica il binario per il tuo sistema operativo e incollalo nella cartella:
          `/usr/texbin/biber `

          Ciao
          Ivan

        • #84261
          Alb
            Up
            0
            Down
            ::


            Grazie Ivan. Ho installato biber 2.6, ma mi dice che ho biblatex 2.3 e devo aggiornarlo, quando invece stando al package manager di TeXLive ho biblatex 2.5. In questi giorni sono un po’ di corsa, ma quando avrò un po’ più tempo cercherò di capire il motivo e vedere se il codice funziona anche a me.

          • #84262
            admin
            Amministratore del forum
              Up
              0
              Down
              ::

              ivan” post=83540Ecco un bellissimo esempio per comprendere le potenzialità di biber:

              `\DeclareSourcemap{
              \maps[datatype=bibtex]{
              \map{
              \step[fieldsource=date, match=\regexp{([^2][^9]\d{2})},final]
              \step[fieldset=publisher, null]
              }
              }
              }`

              Il comando cerca nel campo “date” l’espressione regolare data in argomento a \regex,
              ovvero qualcosa che inizia con un numero che non sia “2” (per escludere le pubblicazioni dal 2000);
              seguito da un numero che non sia no “9” (per escludere le pubblicazioni dal dal 1900).
              Dopo le prime due cifre seguono due numeri qualsiasi (\d{2}).
              Il secondo \step individua il campo publisher (fieldset) e lo cancella (null).

              Con le espressioni regolari si può fare sicuramente di meglio.
              Per esempio bisognerebbe affinare il codice per le date della forma: “1850-1864”,
              ma per questi casi si può semplicemente aggiungere uno \step con la data specifica:
              `\step[fieldsource=date, match=\regexp{1850-1864},final] `
              Avanti i maghi delle espressioni regolari!

              Ciao
              Ivan

              OT: Ivan, perché non ci regali un articolo di ArsTeXnica o una guida tematica su Biber? Hai già un potenziale lettore 😀

              Ciao,
              Orlando

            • #84263
              Up
              0
              Down
              ::

              ansys” post=83570
              OT: Ivan, perché non ci regali un articolo di ArsTeXnica o una guida tematica su Biber? Hai già un potenziale lettore 😀

              Ciao,
              Orlando

              [OT]
              … ci sto pensando da un po’, ma in questi mesi sono strapieno di impegni.
              Ho già iniziato a scrivere qualcosa, ma per il momento è tutto in alto mare. Spero di riuscire
              a riprendere alcuni lavori con Maggio.
              Comunque ti ringrazio, perché il tuo invito mi è sicuramente di stimolo.
              Adesso infatti mi è venuta voglia di scrivere qualche altro paragrafo,
              ma prima devo risolvere il problema di Alberto (collega filosofo) nell’altro post.

              Ciao
              Ivan

            • #84264
              admin
              Amministratore del forum
                Up
                0
                Down
                ::


                Grazie a te,
                Orlando

              • #84265
                Alb
                  Up
                  0
                  Down
                  ::


                  Benché il codice fornito da Ivan qualche post fa non mi funzionasse, il codice seguente funziona, anche usando biber 1.5 anziché 1.6beta. Non so per quale motivo e non so se il codice qui sotto sia scritto bene, ma lo posto lo stesso nel caso possa servire a qualcuno:
                  `\DeclareSourcemap{
                  \maps[datatype=bibtex]{
                  \map{
                  % Do not print publisher for works whose “date”
                  % field starts with a digit <1900 (e.g.: “1834”, “1834/1835”)
                  \step[fieldsource=date,match=\regexp{^1[0-8][0-9][0-9]},final]
                  \step[fieldset=publisher, null]
                  }
                  % Do not print publisher for works whose
                  % “year” field starts with a digit <1900 (e.g.: “1834”,
                  % “1834–1835”, “1834 [1700]”)
                  \map{
                  \step[fieldsource=year,match=\regexp{^1[0-8][0-9][0-9]},final]
                  \step[fieldset=publisher, null]
                  }
                  }
                  }`

                  Ciao
                  Alberto

                • #84266
                  Up
                  0
                  Down
                  ::


                  Ancora più semplice:
                  `\DeclareSourcemap{
                  \maps[datatype=bibtex]{
                  \map{
                  \step[fieldsource=date, match=\regexp{1[^9]\d{2}},final]
                  \step[fieldset=publisher, null]
                  }
                  \map{
                  \step[fieldsource=year, match=\regexp{1[^9]\d{2}},final]
                  \step[fieldset=publisher, null]
                  }
                  }
                  }`

                  Il codice trova i campi “year” e “date” che iniziano con 1 e che non hanno 9 come seconda cifra.
                  \d{2} indica due numeri interi qualsiasi. Quindi trova tutti gli anni del tipo: 18**, 17**, 16**, …, 10**
                  e per questi elimina il campo publisher.

                  L’ho testato e funziona. Non capisco perché non funzione con biber 1.5.
                  Forse non riconosce ancora tutte le espressioni regolari.

                  Ciao
                  Ivan

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

              Go to top