作者姓名列表中的多余空格

作者姓名列表中的多余空格

当我的参考书目中的条目有两位以上的作者时,由于某种原因,在姓名列表中会出现一个看似多余的空格,而
A. One, A. Two, and A. Three不是
A. One, A. Two, and A. Three我认为应该出现的样子。

我正在使用 revtex,并在 ShareLatex 中编辑。这是我在下面的 MWE 生成的 pdf 中看到的内容,您可以在参考文献 [3] 中看到额外的空间: 外太空

MWE TeX:

\documentclass[reprint,aps]{revtex4-1}

\begin{document}

Lorem ipsum~\cite{article1,article2,article3}.

\bibliographystyle{apsrev4-1}
\bibliography{name}

\end{document}

.bib 文件:

@article{article1,
    title = {Title},
    volume = {1},
    journal = {Journal Title},
    author = {One, Author},
    year = {2000}}

@article{article2,
    title = {Title},
    volume = {1},
    journal = {Journal Title},
    author = {One, Author and Two, Author},
    year = {2000}}

@article{article3,
    title = {Title},
    volume = {1},
    journal = {Journal Title},
    author = {One, Author and Two, Author and Three, Author},
    year = {2000}}

任何帮助都将非常有帮助,谢谢!

答案1

这似乎是.bst文件中的一个错误,请联系 REVTeX 包的维护者,https://journals.aps.org/revtex

问题在于,文件在两个函数和中.bst插入空格,而\不是。在这些情况下,两个连续的空格不会像正常情况那样连成一个。顺便说一句,样式在函数中正确处理了这个问题。format.namesformat.names.edformat.full.names

要解决此问题,您必须.bst直接修改。如果您向期刊提交,则可能会出现问题,具体取决于他们的工作流程。

  1. apsrev4-1.bst在您的机器上找到。您可以通过kpsewhich apsrev4-1.bst在命令行/终端中输入来执行此操作。或者,从 CTAN 获取该文件的副本http://mirrors.ctan.org/macros/latex/contrib/revtex/bibtex/bst/revtex/apsrev4-1.bst
  2. 将文件复制到 TeX 可以找到的位置。文档目录就可以了。另请参阅https://www.tex.ac.uk/FAQ-inst-wlcf.html
  3. 将文件重命名为apsrev4-1-nospace.bst(许可证apsrev4-1.bst强烈建议您在修改文件时更改名称)
  4. 打开文件并找到函数FUNCTION {format.names}(在我的版本中为 ll.1541-1579)并将整个块替换为

    FUNCTION {format.names}
    { 'bibinfo :=
      duplicate$ empty$ { pop$ "" } {
        duplicate$ num.names$
        duplicate$ 'numnames :=
        'namesleft :=
        's :=
        #1 'nameptr :=
        ""
          { namesleft #0 > }
          {
          format.names.morfont
            bibinfo bibinfo.check
            type$ "presentation" =
              'check.speaker
              'skip$
            if$
            't :=
            nameptr #1 > not
              {
                t *
              } {
                namesleft #1 >
                  {
                    names.punctuate
                    t *
                  } {
                    s nameptr "{ll}" format.name$ duplicate$ "others" =
                      { 't := }
                      { pop$ }
                    if$
                    numnames #2 >
                      { "," * }
                      'skip$
                    if$
                    t "others" =
                      {
                        " " *
                        bbl.etal
                        emphasize
                        *
                      } {
                        bbl.and
                        space.word *
                        t *
                      }
                    if$
                  }
                if$
              }
            if$
            nameptr #1 + 'nameptr :=
            namesleft #1 - 'namesleft :=
          }
        while$
      } if$
    }
    

    唯一的变化是在第 1573 行( 之后的行numnames #2 >),我们将其替换'names.punctuate{ "," * }。这只会插入逗号,而不是逗号和空格。

  5. 对 (ll. 1695-1746) 执行相同操作FUNCTION {format.names.ed}。应将其替换为

    FUNCTION {format.names.ed}
    {
      control.editor #0 > {
        format.names
      } {
        'bibinfo :=
        duplicate$ empty$ 'skip$ {
        's :=
        "" 't :=
        #1 'nameptr :=
        s num.names$ 'numnames :=
        numnames 'namesleft :=
          { namesleft #0 > }
          {
           format.names.ed.morfont
            bibinfo bibinfo.check
            't :=
            nameptr #1 >
              {
                namesleft #1 >
                  {
                    names.punctuate
                    t *
                  }{
                    s nameptr "{ll}" format.name$ duplicate$ "others" =
                      { 't := }
                      { pop$ }
                    if$
                    numnames #2 >
                      { "," * }
                      'skip$
                    if$
                    t "others" =
                      {
                        " " * bbl.etal emphasize *
                      }{
                       bbl.and
                        space.word * t *
                      }
                    if$
                  }
                if$
              }
              't
            if$
            nameptr #1 + 'nameptr :=
            namesleft #1 - 'namesleft :=
          }
        while$
        } if$
      } if$
    }
    

    再次,变化发生在之后的行中numnames #2 >,即第 1724 行,其中'names.punctuate被替换为{ "," * }

  6. 在文件顶部的注释中添加您的姓名和日期并解释修改。

  7. 在您的文档中使用\bibliographystyle{apsrev4-1-nospace}而不是。\bibliographystyle{apsrev4-1}

相关内容