![使用 AMSRefs 时,如何定义类似于 \DefineJournal 的 \DefineSeries 命令?](https://linux22.com/image/436213/%E4%BD%BF%E7%94%A8%20AMSRefs%20%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E5%AE%9A%E4%B9%89%E7%B1%BB%E4%BC%BC%E4%BA%8E%20%5CDefineJournal%20%E7%9A%84%20%5CDefineSeries%20%E5%91%BD%E4%BB%A4%EF%BC%9F.png)
在第 8.4 节中缩写: \DefineName
, \DefineJournal
, 和 \DefinePublisher
AMSRefs包装文档中提到:
写完之后
\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-journals
或abbrev
选项传递给amsrefs
包时,这也会使用该系列的简短版本。