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

#99337
Up
0
Down
::

Teodoro Studita” post=98871Salve 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

Go to top