biblatex 中书评的具体格式

biblatex 中书评的具体格式

我必须在论文的参考书目中插入对其他作品的评论(作品中也引用了,但这不相关)。不幸的是,导师对参考书目的格式要求非常严格,我不得不遵守许多特定的指导方针。

我在 LuaLaTeX 中使用biblatexbiber 后端,我将向 MWE 提供我对参考书目所做的所有修改。

不管怎样,接下来的问题:我想添加一本书的评论。要求它应该出现在参考书目中(建议a意大利语中审查):

[评论作者],建议 a [所评论书籍的完整条目,采用标准格式];[评论的其余信息]

我考虑过创建一个全新的书目驱动程序,但这看起来工作量太大了:实际上,我遇到了有关的内置于 biblatex 中的机制。这似乎非常适合我想要做的事情,但我无法让它把父母进入中间孩子一。在接下来的 MWE 中,我展示了我最好的尝试性 hack,不幸的是,它有一些严重的缺点,这一点很容易看出。具体来说,中的 hack\newbibmacro{title}正确地定位了被审阅的作品,但是:

  1. 当然,它不会删除项目末尾的调用
  2. 它只在第一次调用时有效(我不知道为什么):在这种情况下,我有两个评论(Meyer84Meyer78),但只Meyer78在中间部分显示已评论的标题
  3. 标点符号有点糟糕(我想我可以自己耐心处理这个问题,但如果有人能看到明显的东西,为什么不呢!)。

有人能帮我吗?非常感谢!

\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}

相关内容