地点和年份之间没有逗号,期刊的年份用括号括起来

地点和年份之间没有逗号,期刊的年份用括号括起来

问题:我需要参考书目中的以下条目

Doe John,书名,地点年份。

或者,如果这是一篇文章

Doe John,文章标题,期刊卷(年份)页码

我有以下代码:

\renewbibmacro*{publisher+location+date}{%
        \iffieldundef{location}{%
            \printtext[parens]{%
                \printlist{year}\addspace%
                }}{%
            \printfield{location}\addspace%
            \printlist{year}\addspace%
        }
}

然而,这个输出是:

  1. 书:

Doe John,书名,()。

  1. 文章:

Doe John,文章标题卷(年份)。

但是,书籍应按如下方式显示:

Doe John,书名,地点年份。

任何帮助均感激不尽。

MWE(完整):

\documentclass[10pt,twoside,headings=normal,headsepline=true,numbers=noenddot]{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{helvet}
\usepackage{nomencl}
\usepackage{shorttoc}
\usepackage{tocloft}
\usepackage{hyperref}
\usepackage[left=4.5cm,right=4.5cm,top=5.5cm,bottom=5.5cm]{geometry}
\usepackage[backend=biber,sorting=nty,style=verbose,isbn=false,url=false,publisher=false]{biblatex}
\usepackage{nomencl}
\usepackage{makeidx}
\usepackage{filecontents}
\begin{filecontents}{MWE.bib}
@INCOLLECTION{Doe1999,
  author = {John Doe},
  title = {Title of Book},
  publisher = {Kluwer Law International},
  year = {1999},
  volume = {25},
  series = {Series},
  shortauthor = {Doe},
  shorttitle = {Title of Book}
}
\end{filecontents}
\renewcommand\thechapter{\arabic{chapter}.}
\renewcommand\thesection{§ \arabic{section}}
\renewcommand\thesubsection{\Roman{subsection}.}
\renewcommand\thesubsubsection{\arabic{subsubsection}.}
\renewcommand\theparagraph{\alph{paragraph})}
\renewcommand\thesubparagraph{\alph{paragraph}\alph{subparagraph})}
\newcommand\thesubsubparagraph{\alph{paragraph}\alph{subparagraph}\alph{subsubparagraph})}
\renewcommand{\mkbibnamelast}[1]{\textsc{#1}}
\renewcommand{\mkbibnamefirst}[1]{\textsc{#1}}
\renewcommand{\mkbibnameprefix}[1]{\textsc{#1}}
\renewcommand{\mkbibnameaffix}[1]{\textsc{#1}}
\renewcommand*{\revsdnamepunct}{}
\defbibheading{lit}{\chapter*{Lit}}
\defbibheading{mat}{\chapter*{Mat}}
\DeclareFieldFormat[article,inbook,incollection,inproceedings,patent,thesis,unpublished,shorttitle,journal]{title}{#1}
\renewbibmacro*{finentry}{
                \ifnameundef{shortauthor}
                {
                    \iffieldundef{shorttitle}{%
                    \adddot}{
                    \printtext[parens]{%
                    {cit.}\addspace
                    \printfield{shorttitle}%
                    }\adddot
                    }
                }
                {
                    \iffieldundef{shorttitle}
                    {
                        \printtext[parens]{%
                        {cit.}\addspace
                        \printnames{shortauthor}%
                        }\adddot
                    }
                    {
                        \printtext[parens]{%
                        {cit.}\addspace
                        \printnames{shortauthor}\addcomma\addspace
                        \printfield{shorttitle}%
                        }\adddot
                    }
                }
                }\finentry
\renewbibmacro*{publisher+location+date}{%
        \iffieldundef{location}{%
            \printtext[parens]{%
                \printlist{year}\addspace%
                }}{%
            \printlist{location}\addspace%
            \printlist{year}\addspace%
        }
}
\AtEveryBibitem{\clearfield{publisher}}
\renewcommand{\newunitpunct}{\addcomma\addspace}
\ifpunct{\renewcommand*{\nameyeardelim}{\addspace}}{}
\addbibresource{MWE.bib}
\let\abk\nomenclature%
\makenomenclature
\makeindex
\dedication{\hfill You really reading this shit?}
\author{XYZ}
\title{XYZ}
\setlength{\parindent}{0in}
\setlength\overfullrule{50pt}
\begin{document}
\frontmatter
\pagenumbering{Roman}
\maketitle
\dedication
\thispagestyle{empty}
\renewcommand*{\dictumauthorformat}[1]{#1}
\renewcommand*{\dictumrule}{}
\dictum[Winston Churchill]{If you're going through hell, keep going.}
\newpage
\addcontentsline{ubs}{chapter}{Preface}
\chapter*{Vorwort}
\input{Preface}
\newpage
\addcontentsline{ubs}{chapter}{Overview}
\shorttoc{Overview}{1}
\newpage
\addcontentsline{ubs}{chapter}{ToC}
\tableofcontents
\addcontentsline{ubs}{chapter}{Nomenclature}
\printnomenclature
\printbibliography[title={Lit},heading=lit,notkeyword=mat]
\printbibliography[title={Mat},heading=mat,keyword=mat]
\mainmatter
Lorem ipsum\footcite[p. 1]{Doe1999}.
\backmatter
\addcontentsline{ubs}{chapter}{Index}
\printindex
\end{document}

此外,如果有人能就如何在实际脚注中仅使用(cit.shortauthor、shorttitle)中的文本提供建议,我将不胜感激。

答案1

verbose风格及其变体遵循authortitle-style 书目,该书目与 中定义的标准风格紧密相关standard.bbx

从该文件中您可以看到,出版日期前面的标点符号由几个不同的书目宏设置,具体取决于条目类型:issue+date对于@articlepublisher+location+date对于大多数书籍,institution+location+date对于报告和论文,organization+location+date对于@misc,以及location+date对于@booklet@unpublished

出版issue+date日期已在括号中设置。要删除页码引用前的标点符号,您可以在序言中重新定义\bibpagespunct命令:biblatex.def

\renewcommand*{\bibpagespunct}{%
  \ifentrytype{article}{\addspace}{\addcomma\space}}

要删除页面前缀(例如“p.”和“pp.”),请添加:

\DeclareFieldFormat{page}{#1}
\DeclareFieldFormat{pages}{#1}

其他条目类型中出版日期前的逗号可能来自几个不同的地方。例如publisher+location+date

\newbibmacro*{publisher+location+date}{%
  \printlist{location}%
  \iflistundef{publisher}
    {\setunit*{\addcomma\space}}% <- HERE
    {\setunit*{\addcolon\space}}%
  \printlist{publisher}%
  \setunit*{\addcomma\space}% <- OR HERE
  \usebibmacro{date}%
  \newunit}

其他宏也一样*location+date。要删除逗号,请在重新定义中将所有相关的实例更改为\addcomma\space\addspace否则,您可以使用以下肮脏的技巧(风险自负):

\renewbibmacro*{date}{\setunit{\addspace}\printdate}

在所有这些出版日期中,如果您只想打印出版年份,请将以下内容添加到您的序言中。

\AtEveryBibitem{%
  \clearfield{month}%
  \clearfield{day}}

\AtEveryCitekey{%
  \clearfield{month}%
  \clearfield{day}}

您最后提出的关于在引文中使用shortauthorand 的请求shorttitle最好作为新问题来处理。无论如何都需要澄清。

相关内容