在此主题我对 Idem 的常规行为进行了一些自定义。现在我注意到,如果我引用同一作者的两篇文章,就会出现问题。
ATM,我得到了这个输出:
V.佩里,利昂三世和“和子说”。希腊式血管造影术,载于《意大利教堂历史》第 25 卷(1971 年),第 3-58 页,以及 V. Peri,阿德里亚诺一世和利昂三世的主教所著的《和子说》。一种合理的教条表述。摘自《意大利教堂历史》41(1987),第5-25页
我想要的是:
V.佩里,利昂三世和“和子说”。希腊式血管造影术, 《意大利教堂历史》第 25 卷 (1971 年),第 3-58 页及同上,阿德里亚诺一世和利昂三世的主教所著的《和子说》。一个可信的教条表述,载于《意大利教堂历史评论》41(1987 年),第 5-25 页
因此,基本上有两件事没有按预期进行:
- 第二次引用的同上
- 期刊标题之前的 IN(更准确地说,问题可能是 IN 之前的句号不应该出现在那里)
我该如何解决这一困境?
这是我的 MWE(相信我,我试图将其保持在最低限度)
% !BIB TS-program = biber
% !BIB program = biber
% !TEX encoding = UTF-8 Unicode
% !TeX TS-program = xelatexmk
\begin{filecontents}{archivio.bib}
@article{Per:Leo,
Author = {Vittorio Peri},
Journal = {Rivista di Storia della Chiesa in Italia},
Pages = {3-58},
Title = {Leone \textsc{iii} e il `Filioque'. Echi del caso nell'agiografia greca},
Volume = {25},
Year = {1971}}
@article{Per:Adr,
Author = {Vittorio Peri},
Journal = {Rivista di Storia della Chiesa in Italia},
Pages = {5-25},
Title = {Il «Filioque» nel magistero di Adriano \textsc{i} e di Leone \textsc{iii}. Una plausibile formulazione del dogma.},
Volume = {41},
Year = {1987}}
\end{filecontents}
\documentclass[11pt, openany]{book}
\usepackage{polyglossia}
\setmainlanguage[babelshorthands=true]{italian}
\setotherlanguages{latin, english, french}
\usepackage[]{csquotes}
\usepackage{xpatch}
\usepackage[style=verbose-trad2,
language=auto,
ibidpage=true,
autolang=other,% use new option name
useprefix=true,
giveninits=true,
indexing=true,% or cite?
citepages=separate,%
dateabbrev=false,
backend=biber,
]{biblatex}
\DeclareFieldFormat[article, inbook, incollection, inproceedings]{title}{\mkbibemph{#1}}
\DeclareFieldFormat{journaltitle}{\textquotedblleft #1\textquotedblright}
\DeclareFieldFormat[book, inbook, incollection, inproceedings]{volume}{#1}
% This is to kill a comma between Editor and (Ed.)
\DeclareDelimFormat{editortypedelim}{\addspace}
\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
\DeclareDelimFormat{translatortypedelim}{\addspace}
\DeclareFieldFormat{translatortype}{\mkbibparens{#1}}
\renewcommand*{\newunitpunct}{\addcomma\space}
\xpatchbibmacro{name:andothers}{%
\bibstring{andothers}%
}{%
\bibstring[\emph]{andothers}%
}{}{}
% NEW
\DeclareDelimAlias{finalnamedelim}{multinamedelim}% comma instead of AND between multiple authors
\renewbibmacro{in:}{\bibstring{in}\nopunct\space} %\nopunct aggiunto 30 mag 18 per evitare virgola in incollection
\NewBibliographyString{ibidemloccit,ibidemnoloccit}
\newcommand*{\mklangidem}[1]{%
\DefineBibliographyStrings{#1}{% era \DefineBibliographyStrings{italian}{%
idem = {Id\adddot},
idemsm = {Id\adddot},
idemsf = {Ead\adddot},
idemsn = {Id\adddot},
idempm = {Id\adddot},
idempf = {Id\adddot},
idempn = {Id\adddot},
idempp = {Id\adddot},
ibidemloccit = {\mkbibemph{\autocap{i}bid\adddot}},
ibidemnoloccit = {Ivi},
opcit = {cit\adddot}, %tolto \nopunct per avere la virgola 30 mag 2018
loccit = {loc\adddotspace cit\adddot},
}}
\forcsvlist{\mklangidem}{english,italian, german}
%%%%%%%%%%%%%%%%%%%%%%%%%%%CAMPO EDITOR TRA PARENTESI CON EDD%%%%%%%%%%%
\DefineBibliographyStrings{italian}{
editor = {a cura di},
editors={a cura di},
byeditor = {a cura di}
}
\xpatchbibmacro{author}
{\printnames{author}}
{\iffootnote
{\ifthenelse{\ifciteidem\AND\NOT\boolean{cbx:noidem}}
{\usebibmacro{cite:idem}}
{\printnames{author}}}
{\printnames{author}}}
{}{}
\xpatchbibmacro{bbx:editor}
{\printnames{editor}}
{\iffootnote
{\ifthenelse{\ifciteidem\AND\NOT\boolean{cbx:noidem}}
{\usebibmacro{cite:idem}}
{\printnames{editor}}}
{\printnames{editor}}}
{}{}
\xpatchbibmacro{bbx:translator}
{\printnames{translator}}
{\iffootnote
{\ifthenelse{\ifciteidem\AND\NOT\boolean{cbx:noidem}}
{\usebibmacro{cite:idem}}
{\printnames{translator}}}
{\printnames{translator}}}
{}{}
\renewbibmacro*{cite:ibid}{%
\printtext{%
\bibhyperlink{cite\csuse{cbx@lastcite@\thefield{entrykey}}}{%
\ifloccit
{\bibstring[\mkibid]{ibidemloccit}%
\global\toggletrue{cbx:loccit}}
{\bibstring[\mkibid]{ibidemnoloccit}}}}}
\DeclareFieldFormat[article, inbook, incollection, inproceedings]{citetitle}{\mkbibemph{#1}}
\renewbibmacro*{publisher+location+date}{%
\printlist{publisher}%
\setunit*{\addcomma\space}%
\printlist{location}%
\setunit*{\space}%
\usebibmacro{date}%
\newunit}
\renewbibmacro*{series+number}{%
\iffieldundef{series}
{}
{\setunit{\addspace}%
\printtext[parens]{%
\printfield{series}%
\setunit*{\addspace}%
\printfield{number}}}%
\newunit}
\begin{document}
\cite{Per:Leo} and \cite{Per:Adr}
\end{document}
答案1
对于 idem 问题,请注意 的修补代码author
,bbx:editor
并bbx:translator
明确仅在脚注中启用“idem”。您可以将其更改为
\xpatchbibmacro{author}
{\printnames{author}}
{\ifcitation
{\ifthenelse{\ifciteidem\AND\NOT\boolean{cbx:noidem}}
{\usebibmacro{cite:idem}}
{\printnames{author}}}
{\printnames{author}}}
{}{}
\xpatchbibmacro{bbx:editor}
{\printnames{editor}}
{\ifcitation
{\ifthenelse{\ifciteidem\AND\NOT\boolean{cbx:noidem}}
{\usebibmacro{cite:idem}}
{\printnames{editor}}}
{\printnames{editor}}}
{}{}
\xpatchbibmacro{bbx:translator}
{\printnames{translator}}
{\ifcitation
{\ifthenelse{\ifciteidem\AND\NOT\boolean{cbx:noidem}}
{\usebibmacro{cite:idem}}
{\printnames{translator}}}
{\printnames{translator}}}
{}{}
因此它适用于所有引用。