我在用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
命令来调整句点和评论编号之间的间距:
当我放
review={MR0113214 (22 \#4052)},
在 a 中
\bib
,打印输出中的评论编号和前面的句点之间没有空格。您必须使用
\MR
宏来标记 MR 评论:review={\MR{0113214 (22 \#4052)}},
这将确保间距正确并允许您使用该
msc-links
选项。
然而,由于 MCVE 中描述的原因,这很不方便,即:
其次,我注意到重新定义以便从条目的样式规范中删除\BibSpec{article}
命令会修复最后一个句点和第一个评论条目之间的间距\SentenceSpace
review
只要该\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)}}
我之所以提到这一点,是因为\MR
AMSRefs 包提供的命令实际上就是为了处理上述情况。调整新命令\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}}
。