使用 AMSRefs 时,如何定义类似于 \DefineJournal 的 \DefineSeries 命令?

使用 AMSRefs 时,如何定义类似于 \DefineJournal 的 \DefineSeries 命令?

在第 8.4 节中缩写: \DefineName \DefineJournal, 和 \DefinePublisherAMSRefs包装文档中提到:

写完之后

\DefineName{dmj}{Jones, David M.}

\DefinePublisher{ams}{AMS}{American Mathematical Society}{Providence}

\DefineJournal{jams}{0894-0347}
  {J. Amer. Math. Soc.}
  {Journal of the American Mathematical Society}

您可以按如下方式使用这些缩写:

author={dmj} (or editor={dmj} or translator={dmj})

journal={jams}

publisher={ams}

的第二个参数\DefinePublisher是出版商名称的缩写形式,第三个参数是全名,第四个参数将用作地址。如果short-publishers请求该选项,则将使用缩写;否则将使用全名。

\DefineJournal类似地,如果请求该选项,则将使用第三个参数short-journals;否则将使用第四个参数。(第二个参数是期刊的 ISSN,目前未使用,但包含在内以供将来使用。)

我发现这些非常方便,并希望添加另一个选项来\DefineSeries跟踪系列,例如伦敦数学学会讲稿系列。例如,这里有一个使用该条series目的书籍条目:

\documentclass{amsart}

\usepackage{amsrefs}

\DefineName{wal-k}{Walker, Keith}

\DefinePublisher{cup-c}{Cambridge Univ. Press}{Cambridge University Press}{Cambridge}

\begin{document}

\begin{bibdiv}
\begin{biblist}

\raggedright

\bib{Wal93}{book}{
      editor={wal-k},
       title={Surveys in combinatorics, 1993},
      series={London Math Soc. Lecture Note Ser.},
        ISSN={0076-0552, 2634-3681/e},
   publisher={cup-c},
        date={1993},
      volume={187},
        ISBN={978-0-511-66208-9/e},
         doi={10.1017/CBO9780511662089},
}

\end{biblist}
\end{bibdiv}

\end{document}

看看文献来源对于如何\DefineJournal定义,我尝试将以下内容插入到我的序言中:

\newcommand{\DefineSeries}[4]{%
    \bib*{#1}{periodical}{
        issn={#2},
        series={#4}
    }%
}

\DefineSeries{lmslns}{0076-0552, 2634-3681/e}
    {London Math. Soc. Lecture Note Ser.}
    {London Mathematical Society Lecture Note Series}

然后我用 替换了项目series中的条目。但是,这不起作用:我得到的系列是“lmslns”。我需要在这里做什么?\bib{lmslns}

答案1

把我的评论将其从答案列表中删除。


需要将该字段添加series到需要解析交叉引用的字段列表中,因此序言中的内容如下:

\makeatletter
\catcode`\'=11
\def\bib@resolve@xrefs{%
    \xref@check@c\bib'xref
    \xref@check@a\bib'author
    \xref@check@a\bib'editor
    \xref@check@a\bib'translator
    \xref@check@b\bib'journal
    \xref@check@b\bib'publisher
    \xref@check@b\bib'series        % <--- added this line
}
\catcode`\'=12

\newcommand{\DefineSeries}[4]{%
    \bib*{#1}{periodical}{
        issn={#2},
        series={#4}
    }%
}
    
\@ifpackagewith{amsrefs}{short-journals}{%
    \renewcommand{\DefineSeries}[4]{%
        \bib*{#1}{periodical}{
            issn={#2},
            series={#3},
        }%
    }
}{}
\makeatother

然后,我就可以\DefineSeries像 OP 中提到的那样使用命令了。当选项short-journalsabbrev选项传递给amsrefs包时,这也会使用该系列的简短版本。

相关内容