问题:我需要参考书目中的以下条目
Doe John,书名,地点年份。
或者,如果这是一篇文章
Doe John,文章标题,期刊卷(年份)页码
我有以下代码:
\renewbibmacro*{publisher+location+date}{%
\iffieldundef{location}{%
\printtext[parens]{%
\printlist{year}\addspace%
}}{%
\printfield{location}\addspace%
\printlist{year}\addspace%
}
}
然而,这个输出是:
- 书:
Doe John,书名,()。
- 文章:
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
对于@article
,publisher+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}}
您最后提出的关于在引文中使用shortauthor
and 的请求shorttitle
最好作为新问题来处理。无论如何都需要澄清。