介绍
我需要使用书目样式,这与我能找到的任何使用 BibLaTeX 制作的样式相差甚远,我不知道如何实现它。我非常有信心,使用 BibLaTeX 可以实现所需的样式。不幸的是,包的文档对初学者来说一点也不简单寻找这类问题的答案。
我不知道我的问题是否涵盖了所需样式的所有特点。但是,我希望答案能让我充分了解该系统,以便我可以自己找到进一步的答案。
任何帮助都会得到感谢。部分答案也可能是有益的。例如,对第 1-3 点的回答应该已经引导我找到正确的方向。以下提示也可以帮助我理解系统并找到自己的答案。“驱动程序在 BibLaTeX 中处理这类内容。从文件 abc 中研究行 xyz。这是 BibLaTeX 为默认样式 efg 执行相同操作的地方。”
我必须使用的风格
1) 基本格式应遵循以下几点:(1)作者姓名应独占一行;(2)下一行是年份;(3)其他所有内容的对齐方式与默认的“数字”和“字母”样式类似。
Last name, First name
Year[tab]Title. Subtitle. Publisher's address: Publisher.
2)同一作者的多部作品应按以下方式组合在一起。
Nahin, Paul J.
2010 An Imaginary Tale The Story Of [The Square Root Of Minus One]. Princeton, NJ:
Princeton University Press.
2011 Dr. Euler's Fabulous Formula Cures Many Mathematical Ills. Princeton, NJ:
Princeton University Press.
3) 如果作品没有作者,只有编辑或翻译,则作品标题应像这样替换作者行。不过标题也出现在其正常位置。
The Princeton Companion To Mathematics
2008 The Princeton Companion To Mathematics. Ed. by Timothy Gowers et. al. Princeton,
NJ: Princeton University Press.
4)作者行中的多位作者应以 & 符号分隔。
Larson, Ron & Edwards, Bruce H.
2014 Calculus. 10th ed. Boston, MA: Brooks/Cole, Cengage Learning.
5) 用经典作品代替年份,有一种用户选择的简写方式,即出版商的年份放在出版商名称后面。
Euclid
Elms The Elements, Books I-XIII. Complete And Unabridged. Transl. by Thomas L. Heath.
New York: Barnes & Noble, 2006.
6) 如果速记中缺少参考书目文件,则只需一个破折号。
Euclid
- The Elements, Books I-XIII. Complete And Unabridged. Transl. by Thomas L. Heath.
New York: Barnes & Noble, 2006.
答案1
这是一个基于的解决方案https://tex.stackexchange.com/a/83891/16895
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Book{a,
author = {Nahin, Paul J.},
title = {An Imaginary Tale The Story Of [The Square Root Of Minus One]},
year = {2010},
publisher = {Princeton University Press},
location = {Princeton, NJ},
}
@Book{b,
author = {Nahin, Paul J.},
title = {Dr. Euler's Fabulous Formula Cures Many Mathematical Ills},
year = {2011},
publisher = {Princeton University Press},
location = {Princeton, NJ},
}
@Book{c,
title = {The Princeton Companion To Mathematics},
year = {2008},
editor = {Timothy Gowers},
publisher = {Pr},
location = {Princeton, NJ},
}
@Book{d,
author = {Larson, Ron and Edwards, Bruce H.},
title = {Calculus},
year = {2014},
publisher = {Brooks/Cole, Cengage Learning},
location = {Boston, MA},
}
@Book{e,
author = {Euclid},
title = {The Elements, Books I--XIII. Complete and Unabridged},
translator = {Thomas L. Heath},
location = {New York},
keywords = {classic},
shorthand = {Elms},
}
@Book{f,
author = {Euclid},
title = {The Elements, Books I--XIII. Complete and Unabridged},
year = {2006},
translator = {Thomas L. Heath},
location = {New York},
keywords = {classic},
}
\end{filecontents}
\usepackage[utf8]{inputenc}
\usepackage{biblatex}
\addbibresource{\jobname.bib}
\makeatletter
\newcommand{\@currentauthor}{}
\newcommand{\@current}{}
\newlength{\mybibindent}
\setlength{\mybibindent}{3em}
\renewcommand{\finalnamedelim}{\addspace\&\addspace}
\AtEveryBibitem{%
\savename{labelname}{\@current}%
\ifdefstrequal{\@currentauthor}{\@current}
{\par}
{\item[]%
\usebibmacro{author-or-title}\par}%
\usedriver{}{special}%
\hspace*{-\mybibindent}\makebox[\mybibindent][l]{\usebibmacro{referencelabel}}%
}
\newbibmacro{author-or-title}{%
\ifnameundef{author}
{\printfield{title}}
{\printnames[family-given]{labelname}}
}
\newbibmacro{referencelabel}{%
\ifkeyword{classic}
{\iffieldundef{shorthand}
{--}
{\printfield{shorthand}}}%
{\printdateextra}%
}
\DeclareBibliographyDriver{special}{%
\savename{labelname}{\@currentauthor}%
}
\makeatother
\renewbibmacro{author/translator+others}{}
\renewbibmacro{author/editor+others/translator+others}{}
\defbibenvironment{bibliography}
{\list
{}
{\setlength{\itemindent}{-\mybibindent}%
\setlength{\leftmargin}{\mybibindent}%
\setlength{\itemsep}{\bibitemsep}%
\setlength{\parsep}{\bibparsep}}}
{\endlist}
{}
\begin{document}
Hello world \nocite{*}
\printbibliography
\end{document}
主要技巧是获取参考书目的格式。关键技巧是存储当前值和上一个标签名称,以确定是否有新作者,或者当前条目的作者是否与上一个相同。
然后,可以使用简单的条件来确定是否使用作者姓名或条目标题。经典作品也类似。请注意,我使用关键字来确定作品是否是经典作品(否则我不清楚如何区分非经典作品(带有日期的速记)和经典作品(带有速记但日期是现代出版日期)的情况)。
输出如下:
答案2
我认为您正在寻找的是 Merlin 包。您可以使用它自定义书目样式。不过,这需要一些工作。
http://www.ctan.org/tex-archive/macros/latex/contrib/custom-bib/
编辑:很抱歉,这是 BibTeX 的。不过,我还是把它留在这里,以防有人需要它。