介绍

介绍

介绍

我需要使用书目样式,这与我能找到的任何使用 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 的。不过,我还是把它留在这里,以防有人需要它。

相关内容