我正在处理一个文档,文档长度限制为 8 页,而且绝对不可能容纳整个引用列表,因此我正在寻找一种方法来在行内添加非常短的引用(即后面没有参考列表)。例如
... this has been studied in (Smith et. al., Phys. Rev. Lett. 100, 123456 (2012)) ...
我对特定风格非常灵活,尽管基于 revtex4 的风格也不错。我的大部分参考资料都是期刊文章,而我手头的几本书,如果这样可以简化事情,我也可以手写。
我正在尝试使用 bibentry 包,但仍然找不到适合我需要的样式。有什么想法吗?例如,当有多个作者、没有名字首字母、没有出版物标题时,我需要“et al”。我需要期刊缩写(虽然我认为这是另一个问题)。
任何帮助都将不胜感激...
谢谢
答案1
这是一个 biblatex 解决方案。它不需要 Biber(当然,它可以与 Biber 配合使用)。它并非旨在成为一个完善的解决方案,例如人们可以将其组合成一个完整的样式:它假设您的要求适用:仅书籍和文章;没有参考书目。它允许您使用\cite
和\parencite
。
我不知道该如何处理后记。最后我把它们放在了引文的中间,年份之前。
我不确定如何处理重复引用;事实上,我只是保留了它们,但没有重复年份——因为你试图节省空间!不过,它可能足够简单,你可以相当清楚地了解它在做什么,并自己摆弄细节。
(不要将此视为对此类引用系统的认可!但必须如此,而且这很好地展示了 Biblatex 的灵活性。)
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@ARTICLE{smith,
author = {Smith and others},
journaltitle = {Phys. Rev. Lett.},
volume = {100},
pages = {123--456},
date = {2012},
}
@BOOK{jones,
author = {Jones, Arthur},
title = {Something about physics},
date = {2011},
publisher = {Dont Print Me},
}
\end{filecontents}
\usepackage[style=authoryear, backend=bibtex, citetracker=true]{biblatex}
% For compression, we just give the *first* page of an article
\DeclareFieldFormat{pages}{%
\mkfirstpage*{#1}}
\renewbibmacro{postnote}{%
\ifboolexpr{ test {\iffieldundef{postnote}}
or test {\iftoggle{postnoteprinted}}}
{}
{\setunit{\addcomma\space at\space}%
\ifboolexpr{ test {\iffieldundef{pagination}}
or test {\iffieldequalstr{pagination}{page}}}
{\printfield[default]{postnote}}
{\printfield{postnote}}
\global\toggletrue{postnoteprinted}}}
\newtoggle{postnoteprinted}
\renewbibmacro*{cite}{%
\global\togglefalse{postnoteprinted}%
\iffieldundef{shorthand}
{\ifboolexpr{ test {\ifentrytype{article}}
or test {\ifentrytype{book}} }
{\DeclareFieldAlias{journaltitle}{default}%
\usedriver{}{\thefield{entrytype}:abbrv}}
{{\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
\setunit{\addspace}}
{\printnames{labelname}%
\setunit{\nameyeardelim}}%
\usebibmacro{cite:labelyear+extrayear}}}}
{\usebibmacro{cite:shorthand}}}
\DeclareBibliographyDriver{article:abbrv}{%
\usebibmacro{begentry}%
\printnames{labelname}
\setunit{\addcomma\space}%
\usebibmacro{journal+issuetitle}%
\setunit{\addcomma\space}%
\usebibmacro{note+pages}%
\usebibmacro{postnote}%
\setunit{\addspace}%
\usebibmacro{bracketedyear}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{book:abbrv}{%
\usebibmacro{begentry}%
\printnames{labelname}%
\setunit{\addcomma\space}%
\usebibmacro{maintitle+title}%
\usebibmacro{postnote}%
\setunit{\addspace}%
\usebibmacro{bracketedyear}%
\usebibmacro{finentry}}
% Always uses parentheses, because that was what the
% example showed. \mkbibparens would be better IMO.
\newbibmacro{bracketedyear}{%
\ifciteseen
{}
{\iffieldundef{year}
{}
{\printtext{(\printfield{year})}}}}
\addbibresource{\jobname.bib}
\begin{document}
Parenthetical citation: \parencite{smith}. Repeated \parencite[125]{smith}
Citation to a book: \cite[456]{jones}.
\end{document}