如何让 amsrefs 在交叉引用中包含出版商的名称?

如何让 amsrefs 在交叉引用中包含出版商的名称?

我有以下使用该amsrefs包进行交叉引用的示例:

\documentclass{amsart}
\usepackage{amsrefs}

\begin{document}

Please see \cite{B} for more details.

\begin{bibdiv}
\begin{biblist}
  \bib*{A}{book}{
    title = {Proceedings of the 10th Annual International Conference on XXX},
    publisher = {La-La},
    date = {2000}
  }
  \bib{B}{article}{
    title = {A Brief History of XXX},
    author = {John, M.},
    xref = {A},
    date = {2000},
    pages = {70--80}
  }
\end{biblist}
\end{bibdiv}

\end{document}

通过 LaTeX 运行此程序并预览 PDF 文档,我发现参考书目中的文章条目包含会议论文集书籍的标题,但不包含书籍出版商的名称。有没有一种优雅的方法来解决这个问题?

谢谢!

答案1

您可以重新定义以下规格collection.article

\documentclass{amsart}
\usepackage{amsrefs}

\BibSpec{collection.article}{%
    +{}  {\PrintAuthors}                {author}
    +{,} { \textit}                     {title}
    +{.} { }                            {part}
    +{:} { \textit}                     {subtitle}
    +{,} { \PrintContributions}         {contribution}
    +{,} { \PrintConference}            {conference}
    +{}  {\PrintBook}                   {book}
    +{,} { }                            {booktitle}
    +{,} { }                            {publisher}
    +{,} { \PrintDateB}                 {date}
    +{,} { pp.~}                        {pages}
    +{,} { }                            {status}
    +{,} { \PrintDOI}                   {doi}
    +{,} { available at \eprint}        {eprint}
    +{}  { \parenthesize}               {language}
    +{}  { \PrintTranslation}           {translation}
    +{;} { \PrintReprint}               {reprint}
    +{.} { }                            {note}
    +{.} {}                             {transition}
    +{}  {\SentenceSpace \PrintReviews} {review}
}


\begin{document}

Please see \cite{B} for more details.

\begin{bibdiv}
\begin{biblist}
  \bib*{A}{book}{
    title = {Proceedings of the 10th Annual International Conference on XXX},
    publisher = {La-La},
    date = {2000}
  }
  \bib{B}{collection.article}{
    title = {A Brief History of XXX},
    author = {John, M.},
    xref = {A},
    date = {2000},
    pages = {70--80}
  }
\end{biblist}
\end{bibdiv}

\end{document}

出版商amsrefs.sty不包含在该条目类型的信息中。请注意,最好对其进行分类,collection.article而不是article无论如何。

在此处输入图片描述

答案2

如第 8.3 节所述包装文档,复合字段也可用作交叉引用字段。在这种情况下,您可以使用book={A}而不是 来显示出版商的名称xref={A}

当使用 book={A} 而不是 xref={A} 时的输出屏幕截图

这里,年份2000出现了两次,因为该条目date={2000}出现在\bib*{A}{book}条目中,也出现在\bib{B}{article}条目中。有时,这确实是所需的行为;但在这种情况下,它似乎是多余的,因此您可以删除条目date中的条目\bib{B}{article}


公平地说,文档\xref对于何时应使用复合字段(如交叉引用)来代替它,有点不清楚book,实际上将其留作“读者的练习” [第 8.3 节,第 24 页]。

对文档中提供的示例进行一些实验可以得出以下经验规则:

  1. \xref表现得好像交叉引用中的所有字段\bib*都逐字添加到主\bib引用中,除了以title形式添加的任何字段booktitle。例如,在您的 MCVE 中,输出包含文章的标题以及会议的标题,因为后者字段是booktitle通过 导入为字段的xref

    约翰先生,XXX 简史, 第 10 届 XXX 国际会议论文集,2000 年,第 70-80 页。

  2. 交叉引用重复的任何字段都将被忽略。MCVEdate中的字段就是这种情况:请注意,年份“2000”在输出中仅出现一次,这是应该的。
  3. 交叉引用中任何不被主引用类型识别的字段都会被忽略。在您的例子中,交叉引用添加的字段被忽略,因为这些字段不被条目\bib类型识别。publisheraddressarticle
  4. 例如,当使用复合字段book进行交叉引用时,\bib*交叉引用中的字段将逐字导入book主引用中的复合字段\bib。此“内页”字段(在本例中)识别的任何字段都会打印,而它无法识别的任何字段都会被忽略。

相关内容