我目前正在撰写博士论文,我一直在寻找一个方便的参考书目包/样式/等等来满足我对自定义参考文献列表的需求。
\documentclass{book}
\usepackage[sort]{natbib}
\begin{document}
Trying citations
\citep{pollock} and \citet{pollock}
\bibliographystyle{plainnat}
\bibliography{articles}
\end{document}
使用以下articles.bib
文件:
@article{pollock,
year={2050},
journal={My Journal A},
volume={27},
number={4},
title={The breakdown of single-crystal solidification},
url={https://tex.stackexchange.com/posts/213463},
author={Pollock, T.M. and Murphy, W.H.},
pages={1000-2000},
}
我的要求基本上通过natbib
或plainnat
设置apalike
得到满足authordate
:
- 使用作者姓名代替
alpha
-style 来引用,例如 [Bao98] - 必要时提供文本引用,无需正常的括号引用
- 生成一个参考列表,其中包括常用项目 + URL + (最重要的是:)引用左侧的括号标识符,该标识符是使用
alpha
style in生成的natbib
但最后一点是不可能的,这就是为什么我尝试寻找替代解决方案,但没有真正找到合适的解决方案:
dinat
解决方案很棒,但它支持德语引用(在引用和参考文献中产生德语单词!)- 创建了一个自定义的
style.bst
使用latex makebst
工具,但是新的承诺风格产生了类似的错误这个问题但尝试了建议的答案和解决方案后仍无法修复。也许我应该在使用它之前加载一些额外的包
底线是,这有可能吗?还是对 LateX 的要求太高了?与此同时,我正在“拖延”这些链接:
答案1
使用Natbib
考虑到对我的问题的评论,最快的方法是破解文件dinat.bst
并更改以下内容:
- 德语到英语单词
- 作者姓名字体
- 卷/期/年份格式
- 删除了 urldate 字段
- 删除了不必要的破折号
- 修改标签和引用之间的间距
最终输出:
使用BibLateX
\usepackage[american]{babel}% Recommended
\usepackage{csquotes}% Recommended
\usepackage [backend=bibtex,style=authoryear]{biblatex} %style=authoryear %style=apa
\newcommand{\citep}[1]{\parencite{#1}}
\newcommand{\citet}[1]{\textcite{#1}}
\ExecuteBibliographyOptions{hyperref=true,backref=true,firstinits=true, isbn=false, eprint=false,
url=true, doi=false, sorting=nyt, minnames=1, maxcitenames=2, maxbibnames=2,
alldates=short, punctfont=true, autopunct=false, block=none, dashed=false}
% Path to bib file (with extension)
\addbibresource{articles.bib}
% Spacing in list of references
\setlength{\bibitemsep}{15pt} %vertical spacing
\setlength{\bibhang}{1cm} %label alignment (0 for perfect align)
% Disable URL dates and language
\AtEveryBibitem{%
\clearfield{urldate}%
\clearfield{urlday}%
\clearfield{urlmonth}%
\clearfield{urlyear}%
\clearlist{language}
}%
%Fix the comma problem after the journal name (via addcomma)
\DeclareFieldFormat{journaltitle}{\mkbibemph{#1\isdot}\addcomma\space}
%Fix number and volume format
\renewbibmacro*{volume+number+eid}{%
\printfield{volume}%
% \setunit*{\adddot}% DELETED
\setunit*{\addnbspace}% NEW (optional); there's also \addnbthinspace
\printfield{number}%
\setunit{\addcomma\space}%
\printfield{eid}}
\DeclareFieldFormat[article]{number}{\mkbibparens{#1}}
%Disable In prefix
\renewbibmacro{in:}{}
% Define brackets instead of parenthesis
\makeatletter
\newrobustcmd*{\parentexttrack}[1]{%
\begingroup
\blx@blxinit
\blx@setsfcodes
\blx@bibopenparen#1\blx@bibcloseparen
\endgroup}
\AtEveryCite{%
\let\parentext=\parentexttrack%
\let\bibopenparen=\bibopenbracket%
\let\bibcloseparen=\bibclosebracket}
\makeatother
%define label before reference in list
\renewbibmacro{begentry}{%
\textbf{[\printnames[][-\value{liststop}]{labelname}~\printfield{labelyear}\printfield{extrayear}}]\\}
%define full hyperlink for textcite
\DeclareCiteCommand{\textcite}
{\boolfalse{cbx:parens}}
{\usebibmacro{citeindex}%
\printtext[bibhyperref]{\usebibmacro{textcite}}}
{\ifbool{cbx:parens}
{\bibcloseparen\global\boolfalse{cbx:parens}}
{}%
\multicitedelim}
{\usebibmacro{textcite:postnote}}
%define full hyperlink for parencite
\DeclareCiteCommand{\parencite}[\mkbibparens]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\printtext[bibhyperref]{\usebibmacro{cite}}}
{\multicitedelim}
{\usebibmacro{postnote}}
文档主体中的命令\printbibliography
将打印带有标签的参考文献列表。