Re: Biblatex: domanda facile (per chi lo sa fare!)

#99338
Up
0
Down
::

ivan” post=98879

Salve ancora,
In una personalizzazione che ridefinisce la classe @book, non so come avere la virgola prima della pagina citata.

Il punto critico della ridefinizione è questo:

`\newunit\newblock
\usebibmacro{pageref}%
\newblock\nopunct%
\usebibmacro{series+number}%
\newunit\newblock
\usebibmacro{finentry}}`

e questo è l’esempio funzionante (non può essere proprio “minimo” perché lo stile è stato modificato di brutto

`\begin{filecontents}{archivio.bib}

@book{Jor:Reg,
Address = {Paris},
Author = {Edouard Jordan},
Date-Added = {2014-05-19 18:33:57 +0200},
Date-Modified = {2014-05-19 18:45:30 +0200},
Publisher = {Ernest Thorin {\'E}diteur},
Title = {Les registres de Clement IV},
Volume = {I-II},
Year = {1893}}

@article{Ana:Sum,
Date-Added = {2013-07-14 17:31:43 +0200},
Date-Modified = {2013-11-03 18:58:39 +0100},
Journal = {Analecta Augustiniana},
Pages = {349-356; 373-379; 401-404; 423-426; 466-473.},
Shorttitle = {Summarium bullarum},
Title = {Summarium bullarum de rebus Ordinis agentium, quae ante litteras circulares Rmi Gioia [25 martii 1747] in archivio generali Ordinis desiderabantur, sed in aliis eiusdem Ordinis archivis existebant},
Volume = {V},
Year = {1913-1914}}

\end{filecontents}

%%%%%%%%%%%%%%%%%%%%%%%%%%% PREAMBOLO %%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[twoside]{article}
\usepackage{polyglossia}
\setmainlanguage{italian}
\usepackage{fontspec}
\fontspec{New Aster LT Std}
\usepackage{xpatch} % Per customizzare Idem in Biblatex-verbose
%%%%%%%%%%%%%%%%%%%COMANDI DI BILIOGRAFIA%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[ style=verbose-trad2, % Stile generale della bibliografia
language=italian,
useprefix=true, % Van, Von, etc.
firstinits=true, % Nomi puntati
backend=biber, % Compilare l'aux con texworks e biber (NON bibtex!)
]{biblatex}

\DeclareFieldFormat[article, inbook, incollection, inproceedings]{title}{\mkbibemph{#1}} % Titolo in corsivo
\DeclareFieldFormat[article]{journaltitle}{\mkbibquote{#1}} % Titolo rivista tra virgolette a caporale
\DeclareFieldFormat[book, inbook, incollection, inproceedings]{volume}{#1} % Elimina “vol.”
\DeclareListFormat[article, book, inbook, incollection, inproceedings]{publisher}{} % Elimina il campo publisher (nota che pub è una list, non un field)

\DeclareFieldFormat*[article]{postnote}{#1} % Elimina “p.” prima di postnote
\xpatchbibmacro{postnote}{\setunit{\postnotedelim}}{\ifentrytype{article}{\setunit{\addcolon\space}}{\setunit{\postnotedelim}}}{}{} %Spiegazione: Se la voce è @article invece di \setunit{\postnotedelim} si usa \setunit{\addcolon\space}, come voluto. (toglie i due punti finali se non citi una pagina precisa)

\renewcommand*{\newunitpunct}{\addcomma\space} % Virgola tra le unità
\renewcommand*{\mkibid}{\emph} % ibid, op cit e latinitates in enfatico
\renewcommand\mkbibnamelast[1]{\textsc{#1}} % Nomi in maiuscoletto
\renewcommand{\mkbibnamefirst}[1]{\textsc{#1}}
\renewcommand{\mkbibnameprefix}[1]{\textsc{#1}}
\renewcommand{\mkbibnameaffix}[1]{\textsc{#1}}

\renewcommand{\finalnamedelim}{\addcomma\space} % virgola al posto di “e” tra autori multipli
\renewcommand{\bibinitdelim}{} % annulla lo ~ di default tra le iniziali dei nomi

\renewbibmacro{in:}{\bibstring{in}\space} % rimuove i due punti dopo “in”

%Ciò che segue è per far comparire idem correttamente
\xpatchbibmacro{author}{\printnames{author}}{\iffootnote{\ifthenelse{\ifciteidem\AND\NOT\boolean{cbx:noidem}}{\usebibmacro{cite:idem}}{\printnames{author}}}{\printnames{author}}}{}{}
\xpatchbibmacro{editor}{\printnames{editor}}{\iffootnote{\ifthenelse{\ifciteidem\AND\NOT\boolean{cbx:noidem}}{\usebibmacro{cite:idem}}{\printnames{editor}}}{\printnames{editor}}}{}{}
\xpatchbibmacro{translator}{\printnames{translator}}{\iffootnote{\ifthenelse{\ifciteidem\AND\NOT\boolean{cbx:noidem}}{\usebibmacro{cite:idem}}{\printnames{translator}}}{\printnames{translator}}}{}{}

\renewbibmacro*{cite:title}{% Ciò che segue è per avere lo shorttitle alla seconda citazione (funge solo in trad2)
\printtext[bibhyperlink]{%
\printfield[citetitle]{labeltitle}%
\setunit{\addspace}%
\bibstring[\mkibid]{opcit}}}

\renewbibmacro*{publisher+location+date}{% Publisher l'ho già reso vuoto a monte, quindi qui lo elimino
\printlist{location}%
\setunit*{\addspace}%
\usebibmacro{date}%
\newunit}

\renewbibmacro*{series+number}{% % Questa è la macro usata da @book per trattare le serie:
\iffieldundef{series}{}{%
\printtext[parens]{\printfield{series}\addcomma%
\setunit*{\addspace}%
\printfield{number}}}%
\newunit}

\DeclareBibliographyDriver{book}{% % Il driver @book è modificato per avere prima pub+loc+year e dopo ser+num
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/editor+others/translator+others}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{maintitle+title}%
\newunit
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\printfield{edition}%
\newunit
\printfield{volumes}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\usebibmacro{publisher+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit
\printfield{pagetotal}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\addsemicolon\space}\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\newunit\newblock
\usebibmacro{pageref}%
\newblock\nopunct%
\usebibmacro{series+number}%
\newunit\newblock
\usebibmacro{finentry}}

\usepackage[autostyle=true]{csquotes} % Per citare in altre lingue

\addbibresource{archivio.bib}

%%%%%%%%%%%%%%%%%%%%%%%%%%%% INIZIO DOCUMENTO %%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\selectlanguage{italian}

Sembrerebbe che nella classe book manchi una virgola tra l'anno di edizione e la pagina citata: \cite[44]{Jor:Reg}

\end{document}
\endinput
`

Ho provato a vedere se riuscivo a ridefinire la macro pageref ma è al di sopra delle mie possibilità. In pratica mi serve solo un condizionale: se c’è il pageref, allora mettici prima una virgola. Ma come si fa ?!?!

Grazie!

Se con pagina citata intendi, come credo, quella inserita nelle esempio sopra nel campo postnote, ovvero 44, allora senza dubbio pageref non c’entra nulla. Credo che quel \xpatchbibmacro{postnote} abbia creato qualche problema. Probabilmente se ridefinisci il formato di postnote anche per la voce @book risolvi il problema, ma dovrei controllare meglio la macro postnote… (Scusa ma sono con l’iPad e non riesco a fare più di tanto 😉 )

Ciao
Ivan

Neanche io ora ho un computer sotto mano ma mi pare che il problema ci fosse anche solo con la ridefinizione del driver book, come ho scritto nel messaggio precedente (o forse non ho compreso il tuo suggerimento a correggere postnote anche per book?)

Go to top