为什么 AMSRefs 中 bibdiv 环境的可选参数不会覆盖 amsart 文档类中标题的默认文本?

为什么 AMSRefs 中 bibdiv 环境的可选参数不会覆盖 amsart 文档类中标题的默认文本?

在第 4 部分参考书目的章节标题: bibdiv bibsection bibchapterAMSRefs 包文档中提到:

[ ] 将使用或 的bibdiv当前值作为标题文本。但是,如果这还不够,还有三种方法可以自定义其行为: ...\bibname\refname

  1. 所有三个环境 [ bibdiv, bibsection, bibchapter] 都采用可选参数来覆盖标题文本:

    \begin{bibchapter}[Annotated Bibliography]
    

...

我检查了这在标准文档类articlebook和(之后)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}

上述 MCVE 输出的屏幕截图。

为什么使用文档类时标题没有改变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 在与“外部”类一起使用时会为您提供一些灵活性,但在与自己的类一起使用时会强制使用其样式。要使这更加统一,需要重新定义内部命令。

相关内容