我是 Latex 的新手,所以如果有什么不懂的地方,请见谅。我在这里写这篇文章是因为我需要创建自己的引用风格。
这两天我一直在研究,但研究得越深入,知道的就越少。我发现有与我需要的(作者年份)类似的引用样式,但不完全相同,但我不知道如何更改。我试过使用 biblatex,但没有成功。我需要的样式应该是这样的:
在文中 - (作者 1 和作者 2,2016)。
实际期刊参考 - 作者 1,N. 和作者 2,N. (2016) 标题。期刊名称. 卷(部),页码。
页码写法为:第 62-65 页。斜体、大写和标点符号非常重要。
如果您能建议我哪种方法最容易实现这种风格,我将不胜感激。此外,如果您能为我提供创建自定义风格的教程或类似内容,那就太好了。
编辑:我发现 natbib 包中的 apalike 样式产生的结果与我需要的结果非常接近。不过,必须进行以下更改:
删除日期后的句号。
期刊名称后面有一个句号(而不是逗号)。
发行编号后面不要用冒号,而要用逗号加 pp。
总的来说,结果应该是这样的:
请让我知道我应该采取什么步骤来实现这一目标。
编辑2:
我使用了 biblatex 中的 apa 样式,因为它看起来与我想要实现的效果类似。当前 MWE:
\documentclass[a4paper, 12pt]{article}
\usepackage[english]{babel}
\usepackage{csquotes}
\usepackage[maxcitenames=3, style=apa, backend=biber]{biblatex}
\usepackage[T1]{fontenc}
\usepackage{etoolbox}
\usepackage{xpatch}
\DeclareLanguageMapping{english}{english-apa}
%Truncate number of authors to 3
\makeatletter
\DeclareNameFormat{labelname}{%
\ifthenelse{\value{uniquelist}>1}
{\numdef\cbx@min{\value{uniquelist}}}
{\numdef\cbx@min{\value{minnames}}}%
\ifboolexpr{test {\ifnumcomp{\value{listcount}}{=}{1}}
or test {\ifnumcomp{\value{listtotal}}{=}{3}}}
{\usebibmacro{labelname:doname}%
{\namepartfamily}%
{\namepartfamilyi}%
{\namepartgiven}%
{\namepartgiveni}%
{\namepartprefix}%
{\namepartprefixi}%
{\namepartsuffix}%
{\namepartsuffixi}}
{\ifnumcomp{\value{listcount}}{<}{\cbx@min + 1}% normal name
{\usebibmacro{labelname:doname}%
{\namepartfamily}%
{\namepartfamilyi}%
{\namepartgiven}%
{\namepartgiveni}%
{\namepartprefix}%
{\namepartprefixi}%
{\namepartsuffix}%
{\namepartsuffixi}}
{}%
\ifnumcomp{\value{listcount}}{=}{\cbx@min + 1}% first past ul is et al
{\ifnumcomp{\value{listcount}}{<}{\value{listtotal}}
{\andothersdelim\bibstring{andothers}}
{\usebibmacro{labelname:doname}%
{\namepartfamily}%
{\namepartfamilyi}%
{\namepartgiven}%
{\namepartgiveni}%
{\namepartprefix}%
{\namepartprefixi}%
{\namepartsuffix}%
{\namepartsuffixi}}}%
{}%
\ifnumcomp{\value{listcount}}{>}{\cbx@min + 1}% nothing thereafter
{\relax}%
{}%
}%
}
\makeatother
%Remove unnecessary information
\AtEveryBibitem{\clearfield{doi}}
\AtEveryBibitem{\clearfield{url}}
\AtEveryBibitem{\clearfield{arxivId}}
\AtEveryBibitem{\clearfield{arXiv}}
\AtEveryBibitem{\clearfield{archivePrefix}}
\AtEveryBibitem{\clearfield{eprint}}
%Replace & with 'and' in bibliography
\AtBeginBibliography{\renewcommand*{\finalnamedelim}{%
\ifthenelse{\value{listcount}>\maxprtauth}
{}
{\ifthenelse{\value{liststop}>2}
{\finalandcomma\addspace\bibstring{and}\space}
{\addspace\bibstring{and}\space}}}}
%Replace & with 'and' in citing
\AtEveryCitekey{\renewcommand*{\finalnamedelim}{%
\ifthenelse{\value{listcount}>\maxprtauth}
{}
{\ifthenelse{\value{liststop}>2}
{\finalandcomma\addspace\bibstring{and}\space}
{\addspace\bibstring{and}\space}}}}
%Remove full-stop after the date
\renewcommand{\labelnamepunct}{\addspace}
%External database of citations
\addbibresource{library.bib}
\begin{document}
\section{Test}
\parencite{Blasco2002}, \parencite{Clarke2014}, \parencite{Blasco2002}
\printbibliography
\end{document}
结果:
我仍然遇到一些问题:
我必须将期刊标题后的逗号改为句号。
我必须在页码前添加 (pp. )。
我发现人们想要删除它们,但如何添加它们呢?
答案1
和
\renewbibmacro*{journal+issuetitle}{%
\usebibmacro{journal}%
\setunit*{\addperiod\addspace}%
\iffieldundef{series}
{}
{\newunit
\printfield{series}
\setunit{\addcomma\space}}%
\printfield{volume}%
\printfield{number}%
\setunit{\addspace}\newblock
\usebibmacro{issuename}%
\newunit}
期刊标题后面会有一个句号,而不是逗号。
您可以使用以下方式获取页码
\DeclareFieldFormat*{pages}{\mkpageprefix[bookpagination]{#1}}
\DeclareFieldFormat*{pagetotal}{\mkpagetotal[bookpagination]{#1}}