我必须在论文的参考书目中插入对其他作品的评论(作品中也引用了,但这不相关)。不幸的是,导师对参考书目的格式要求非常严格,我不得不遵守许多特定的指导方针。
我在 LuaLaTeX 中使用biblatex
biber 后端,我将向 MWE 提供我对参考书目所做的所有修改。
不管怎样,接下来的问题:我想添加一本书的评论。要求它应该出现在参考书目中(建议a意大利语中审查):
[评论作者],建议 a [所评论书籍的完整条目,采用标准格式];[评论的其余信息]
我考虑过创建一个全新的书目驱动程序,但这看起来工作量太大了:实际上,我遇到了有关的内置于 biblatex 中的机制。这似乎非常适合我想要做的事情,但我无法让它把父母进入中间孩子一。在接下来的 MWE 中,我展示了我最好的尝试性 hack,不幸的是,它有一些严重的缺点,这一点很容易看出。具体来说,中的 hack\newbibmacro{title}
正确地定位了被审阅的作品,但是:
- 当然,它不会删除项目末尾的调用
- 它只在第一次调用时有效(我不知道为什么):在这种情况下,我有两个评论(
Meyer84
和Meyer78
),但只Meyer78
在中间部分显示已评论的标题 - 标点符号有点糟糕(我想我可以自己耐心处理这个问题,但如果有人能看到明显的东西,为什么不呢!)。
有人能帮我吗?非常感谢!
\documentclass[a4paper,twoside,12pt]{scrbook}
\begin{filecontents*}{\jobname.bib}
@article{Meyer84,
author={Meyer, Paul},
year={1884},
journal={Romania},
volume={XIII},
pages={494-495},
related={Hundgen},
relatedtype={reviewof},
}
@book{Hundgen,
author={H\"undgen, Franz},
title={Das altprovenzalische Boëthiuslied},
titleaddon={unter Beif\"ugung einer Uebersetzung, eines Glossars, erkl\"arender Anmerkungen sowie grammatischer und metrischer Untersunchungen herausgegeben},
year={1884},
location={Oppeln},
publisher={Eugen Franck’s Buchhandlung},
}
@article{Boehmer,
author={Boehmer, Eduard},
title={Zum Boeci},
year={1878},
journal={Romanische Studien},
volume={III},
pages={133-142}
}
@article{Meyer78,
author={Meyer, Paul},
year={1878},
journal={Romania},
volume={VII},
pages={471},
related={Boehmer},
relatedtype={reviewof},
}
\end{filecontents*}
\usepackage[italian]{babel}
\usepackage[style=authoryear,
maxalphanames=1,
backend=biber,
backref=false,
maxcitenames=3,
hyperref=true,
dashed=false,
url=false,
doi=false,
isbn=false,
date=year]{biblatex}
\addbibresource{\jobname.bib}
\setlength\bibitemsep{2\itemsep}
\setlength\bibhang{2em}
\renewcommand*{\newunitpunct}{\addcomma\space}
\renewcommand*{\finentrypunct}{}
\renewcommand*{\labelnamepunct}{,\space}
\renewcommand*{\intitlepunct}{\space}
\renewcommand*{\mkbibnamefamily}[1]{\textsc{#1}}
\renewcommand*{\mkbibnamegiven}[1]{#1}
\renewcommand*{\mkbibnameprefix}[1]{{#1}}
\renewcommand*{\mkbibnamesuffix}[1]{{#1}}
\DeclareNameAlias{sortname}{given-family}
%\renewcommand{\multinamedelim}{\space--\space}
\renewcommand{\finalnamedelim}[0]{\addspace--\addspace}
%\renewcommand*{\labelnamepunct}{\space--\space}
\DefineBibliographyStrings{italian}{%
reviewof = {rec. a}
}
\renewbibmacro*{date+extradate}{}
\DeclareFieldFormat[article,inbook,incollection,inproceedings,patent,thesis,unpublished]{title}{\emph{#1\isdot}}
\DeclareFieldFormat{journaltitle}{<<#1>>}
\DeclareFieldFormat{superedition}{\textsuperscript{#1}}
\renewbibmacro*{issue+date}{%
\printfield{issue}%
\setunit{\space(}%
\printdate)%
\newunit}
\renewbibmacro*{publisher+location+date}{%
\printlist{location}%
\setunit*{\addcomma\space}%
\printlist{publisher}%
\setunit*{\addcomma\space}%
\printdate%
\newunit}
\makeatletter
\renewbibmacro*{begentry}{%
\renewcommand*{\mkbibnamefamily}[1]{\textsc{\textnohyphenation{##1}}}%
\defcounter{maxnames}{\blx@maxcitenames}%
\printtext[]{\usebibmacro{cite}\addspace\par\nobreak}%
\defcounter{maxnames}{\blx@maxbibnames}
\renewcommand*{\mkbibnamefamily}[1]{##1}
\renewcommand{\finalnamedelim}[0]{\addspace\addcomma\addspace}}
\renewbibmacro*{cite}{%
\iffieldundef{shorthand}%
{\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}%
{\usebibmacro{cite:label}%
\setunit{\printdelim{nonameyeardelim}}}%
{\printnames{labelname}%
\setunit{\printdelim{nameyeardelim}}}%
\usebibmacro{cite:labeldate+extradate}\printfield[superedition]{edition}%
}%
{\usebibmacro{cite:shorthand}}%
}
\newbibmacro*{title}{%
\ifboolexpr{
test {\iffieldundef{title}}
and
test {\iffieldundef{subtitle}}
}%
{\iffieldundef{related}{}{\usebibmacro{related}}}%
{\printtext[title]{%
\printfield[titlecase]{title}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{subtitle}}%
\newunit%
\printfield{titleaddon}}%
}
\newbibmacro*{revtitle}{%
\ifboolexpr{
test {\iffieldundef{title}}
and
test {\iffieldundef{subtitle}}
}%
{}%
{\printtext[title]{%
\printfield[titlecase]{title}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{subtitle}}%
}%
}
\newbibmacro*{related:reviewof}[1]{%
\entrydata*{#1}{%
\iffieldundef{journaltitle}
{\usebibmacro{author/editor+others/translator+others}%
\setunit{\printdelim{nametitledelim}}\newblock
\usebibmacro{revtitle}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\printfield{edition}%
\newunit
\iffieldundef{volume}
{}
{\printfield{volume}%
\printfield{part}}
\newunit\newblock
\usebibmacro{series+number}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\usebibmacro{publisher+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}
}
{\usebibmacro{author/translator+others}%
\setunit{\printdelim{nametitledelim}}\newblock
\usebibmacro{title}%
\newunit\newblock
\usebibmacro{journal+issuetitle}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\usebibmacro{note+pages}
}
}
}
\makeatother
\begin{document}
\cite{Hundgen,Meyer84}
\cite{Boehmer,Meyer78}
\printbibliography
\end{document}