当使用 AMSRefs 格式化我的参考文献时,如何修复评论条目的间距?

当使用 AMSRefs 格式化我的参考文献时,如何修复评论条目的间距?

我在用AMSRefs格式化我的参考文献,我注意到最后一个句号和随后的评论条目之间的空格通常不存在。以下是 MCVE:

\documentclass{amsart}
\usepackage{amsrefs}

\begin{document}

\begin{bibdiv}
\begin{biblist}

\bib{art1}{article}{
    author={First Author},
    author={Second Author},
    title={Title of the paper},
    journal={Journal of interesting results},
    volume={10},
    date={2021},
    number={3},
    pages={8\ndash 11},
    review={MR12345},
    review={MR67890},
    review={Zbl 0123.45678},
}

\end{biblist}
\end{bibdiv}

\end{document}

屏幕截图显示最后一个句号和第一个评论条目之间缺少空格。

\MR如果我使用包提供的命令来格式化数学评论等条目review={\MR{12345}},则每个评论条目前都会添加一个句子空格。因此,第一个和第二个评论条目之间的间距现在看起来很奇怪,尤其是与第二个和第三个条目之间的间距相比。

屏幕截图显示了使用 \MR 命令时添加的句子空格。


问题:我怎样才能使间距正确?


我在(有限的)研究中发现了以下内容,可能会或可能不会有帮助。

首先,在常问问题,坚持使用\MR命令来调整句点和评论编号之间的间距:

  1. 当我放

    review={MR0113214 (22 \#4052)},
    

    在 a 中\bib,打印输出中的评论编号和前面的句点之间没有空格。

    您必须使用\MR宏来标记 MR 评论:

    review={\MR{0113214 (22 \#4052)}},
    

    这将确保间距正确并允许您使用该msc-links选项。

然而,由于 MCVE 中描述的原因,这很不方便,即:

  1. 多次 MR 审查(罕见的情况,但并非不可能)间隔不正确;
  2. 除了 MR 评论之外的评论,例如 Zbl(中央报) 和 JFM (年鉴) 评论,无法正确排版。

其次,我注意到重新定义以便从条目的样式规范中删除\BibSpec{article}命令会修复最后一个句点和第一个评论条目之间的间距\SentenceSpacereview只要\MR命令不用于标记。不过,我不太清楚其中的原因;文献来源,该命令\SentenceSpace定义为:

2789 \newcommand{\SentenceSpace}{\relax\ifhmode\spacefactor`\. \fi}

最后,我尝试查看命令的定义\MR,但没有任何结果。如果有帮助的话,以下是来自文献来源

2643 \def\strip@MRprefix#1#2#3#4\@nil{%
2644     \def\@tempa{#1#2#3#4}%
2645     \if#1M%
2646         \if#2R%
2647             \def\@tempa{#3#4}%
2648         \fi
2649     \fi
2650 }

2651 \def\MR#1{%
2652     \relax\ifhmode\unskip\spacefactor3000 \space\fi
2653     \begingroup
2654         \strip@MRprefix#1\@nil
2655         \edef\@tempa{MR\@nx\MRhref{\@tempa}{\@tempa}}%
2656     \@xp\endgroup
2657     \@tempa
2658 }

2659 \providecommand{\MRhref}[2]{#1}

...

2904 \IfOption{msc-links}{%
2905     \@ifundefined{href}{}{%
2906         \def\parse@MR#1 (#2)#3\@nil{%
2907             \def\MR@url{http://www.ams.org/mathscinet-getitem?mr=#1}%
2908             \def\@tempd{#1}%
2909             \def\@tempe{#2}%
2910         }%
2911         \def\MRhref#1#2{%
2912             \begingroup
2913                 \parse@MR#1 ()\@empty\@nil%
2914                 \href{\MR@url}{\@tempd\vphantom{()}}%
2915                 \ifx\@tempe\@empty
2916                 \else
2917                     \ \href{\MR@url}{(\@tempe)}%
2918                 \fi
2919             \endgroup
2920         }%
2921     }{}
2922 }{}

答案1

您可以定义一个命令来将空间(和空间因子)添加到其他非 MR 评论中:

\documentclass{amsart}
\usepackage{amsrefs}

\newcommand\formatreview[1]{%
     \relax\ifhmode\unskip\spacefactor3000 
     \space\fi
     #1}


\begin{document}

\nonfrenchspacing
\begin{bibdiv}
\begin{biblist}

\bib{art1}{article}{
    author={First Author},
    author={Second Author},
    title={Title of the paper},
    journal={Journal of interesting results},
    volume={10},
    date={2021},
    number={3},
    pages={8\ndash 11},
    review={\MR{MR12345}},
    review={\MR{MR67890}},
    review={\formatreview{Zbl 0123.45678}},
}

\end{biblist}
\end{bibdiv}

\end{document}

在此处输入图片描述

另一种方法是重新定义 \MR 并删除那里的空间因子设置。

答案2

由于我不完全清楚的原因,以下更改似乎解决了该问题。

  • \SentenceSpace从条目\BibSpec的样式规范中删除该命令review可以解决间距问题,前提是该命令\MR不用于标记。
  • 为了使用该\MR命令并保持评论条目的适当间距,我通过在序言中添加以下内容重新定义了它:
\makeatletter
\@ifundefined{href}{%
    \renewcommand{\MR}[1]{MR#1}
}{%
    \renewcommand{\MR}[1]{\href{https://mathscinet.ams.org/mathscinet-getitem?mr=MR#1}{MR#1}}
}
\makeatother

当然,这意味着我需要以特定的格式维护我的 MR 评论review={\MR{12345}},并且以下任何格式都不行:

review={\MR{MR12345}}
review={\MR{12345 (67 \#8910)}}
review={\MR{MR12345 (67 \#8910)}}

我之所以提到这一点,是因为\MRAMSRefs 包提供的命令实际上就是为了处理上述情况。调整新命令\MR来处理这些情况目前超出了我的能力范围;我很乐意听取更有经验的用户提出的改进建议。

对于 Zbl 评论,我定义了\Zbl类似的命令:

\makeatletter
\@ifundefined{href}{%
    \providecommand{\Zbl}[1]{Zbl~#1}
}{%
    \providecommand{\MR}[1]{\href{https://zbmath.org/?q=an:#1}{Zbl~#1}}
}
\makeatother

再次,这意味着我需要以特定的格式维护 Zbl 评论review={\Zbl{0123.45678}}

相关内容