在 amsrefs 字段之间使用 \newline

在 amsrefs 字段之间使用 \newline

我使用 amsrefs 包来格式化参考书目。问题是有时行的排版非常糟糕。这个问题通常是由 doi 字段引起的。见下图。 部分参考书目

我会接受手动换行,即使条目在右侧没有参差不齐。页面字段中的简单 \newline 会在行中留下逗号,这看起来很糟糕(见下图)

右边的逗号不好

知道如何手动换行并添加正确的标点符号吗?MWE 来了

\documentclass{article}
\usepackage{amsmath}
\usepackage{amsrefs}
\renewcommand{\PrintDOI}[1]{DOI~#1}
\begin{document}

\begin{bibdiv}
\begin{biblist}
\bib{14}{article}{
  author={Kim, S.G.},
  title={The unit ball},
  journal={Kyungpook Math. J.},
  volume={53},
  date={2013},
  pages={295--306},
  doi={10.5666/KMJ.2013.53.2.295},
}
\end{biblist}
\end{bibdiv}
\end{document}

答案1

这个极其肮脏的黑客怎么样?

\documentclass{article}
\usepackage{amsmath}
\usepackage{amsrefs}
\renewcommand{\PrintDOI}[1]{DOI~#1}
\begin{document}

\DefineSimpleKey{bib}{doinewline}    
\BibSpec{article}{%
    +{}  {\PrintAuthors}                {author}
    +{,} { \textit}                     {title}
    +{.} { }                            {part}
    +{:} { \textit}                     {subtitle}
    +{,} { \PrintContributions}         {contribution}
    +{.} { \PrintPartials}              {partial}
    +{,} { }                            {journal}
    +{}  { \textbf}                     {volume}
    +{}  { \PrintDatePV}                {date}
    +{,} { \issuetext}                  {number}
    +{,} { \eprintpages}                {pages}
    +{,} { }                            {status}
    +{}  {, \newline\PrintDOI}          {doinewline}
    +{,} { \PrintDOI}                   {doi}
    +{,} { available at \eprint}        {eprint}
    +{}  { \parenthesize}               {language}
    +{}  { \PrintTranslation}           {translation}
    +{;} { \PrintReprint}               {reprint}
    +{.} { }                            {note}
    +{.} {}                             {transition}
    +{}  {\SentenceSpace \PrintReviews} {review}
}

\begin{bibdiv}
\begin{biblist}
\bib{14}{article}{
  author={Kim, S.G.},
  title={The unit ball},
  journal={Kyungpook Math. J.},
  volume={53},
  date={2013},
  pages={295--306},
  doinewline={10.5666/KMJ.2013.53.2.295},
}
\end{biblist}
\end{bibdiv}
\end{document}

答案2

使用\linebreak命令获取正确放置标点符号的换行符。请参阅包装文档更多细节:

第 8.5 节 参考书目中的换行符

假设您需要建议 LaTeX 在特定位置换行。建议在字段中间换行并不困难:只需编辑最终.bbl文件并插入\linebreak命令即可:

subtitle={Toward a transformative hermeneutics\linebreak[3] of quantum gravity},

但是如果你需要强制换行怎么办之间两个领域?乍一看,你可能会担心

subtitle={...hermeneutics of quantum gravity\linebreak[3]},

amsrefs将在通常插入在标题后的 逗号前导致换行:逗号位于换行符之后,而不是之前。 不用担心;amsrefs它会检测到这一点并根据需要自动将逗号移到换行符前面: 逗号可根据需要放置在换行符之前。

相关内容