在第 4 部分参考书目的章节标题: bibdiv
, bibsection
, bibchapter
的AMSRefs 包文档中提到:
[ ] 将使用或 的
bibdiv
当前值作为标题文本。但是,如果这还不够,还有三种方法可以自定义其行为: ...\bibname
\refname
所有三个环境 [
bibdiv
,bibsection
,bibchapter
] 都采用可选参数来覆盖标题文本:\begin{bibchapter}[Annotated Bibliography]
...
我检查了这在标准文档类article
、book
和(之后)report
中是否有效memoir
一个小的调整)。然而,在amsart
文档类中,标题文本始终打印为References
。这是一个 MCVE:
\documentclass{amsart}
\usepackage{amsrefs}
\begin{document}
\begin{bibdiv}[Annotated Bibliography]
\begin{biblist}
\bib{art1}{article}{
author={First Author},
title={Title of the paper},
journal={Journal of interesting results},
volume={10},
date={2021},
}
\end{biblist}
\end{bibdiv}
\begin{bibsection}[Annotated Bibliography]
\begin{biblist*}
\bib{art2}{article}{
author={First Author},
title={Title of the paper},
journal={Journal of interesting results},
volume={10},
date={2021},
}
\end{biblist*}
\end{bibsection}
\end{document}
为什么使用文档类时标题没有改变amsart
?是否有解决方法,以便环境的可选参数即使在文档类bibdiv
中也能起作用amsart
?
我认为另一种方法是使用\renewcommand{\refname}{Annotated Bibliography}
,但我想知道为什么仅对于文档类而言行为不同amsart
,以及是否可以使其统一。
为了帮助大家,我浏览了文献来源相关部分似乎位于 6.12.8 小节的第 1198 至 1243 行打印参考书目:
1198 \providecommand{\bibname}{Bibliography}
1199 \providecommand{\refname}{References}
...
1210 \newenvironment{bibchapter}[1][\bibname]{%
1211 \begingroup
1212 \protected@edef\@{%
1213 \endgroup
1214 \protect\chapter*{#1}%
1215 \protect\bib@div@mark{#1}%
1216 }%
1217 \@
1218 }{\par}
1219 \newenvironment{bibsection}[1][\refname]{%
1220 \begingroup
1221 \protected@edef\@{%
1222 \endgroup
1223 \ifx\@bibtitlestyle\undefined
1224 \protect\section*{#1}%
1225 \else
1226 \protect\@bibtitlestyle
1227 \fi
1228 \protect\bib@div@mark{#1}%
1229 }%
1230 \@
1231 }{\par}
1232 \@ifundefined{chapter}{%
1233 \newenvironment{bibdiv}{\bibsection}{\endbibsection}
1234 }{%
1235 \newenvironment{bibdiv}{\bibchapter}{\endbibchapter}
1236 }
1237 \renewenvironment{thebibliography}[1]{%
1238 \bibdiv
1239 \biblist[\resetbiblist{#1}]%
1240 }{%
1241 \endbiblist
1242 \endbibdiv
1243 }
答案1
如果你看一下定义,\bibsection
你会发现它包含一个开关
\ifx\@bibtitlestyle\undefined
如果你查看 amsart.cls,你可以找到这个定义
\newcommand{\@bibtitlestyle}{%
\@xp\section\@xp*\@xp{\refname}%
}
这意味着 amsrefs 在与“外部”类一起使用时会为您提供一些灵活性,但在与自己的类一起使用时会强制使用其样式。要使这更加统一,需要重新定义内部命令。