使用 \citep 时,作者姓名与年份之间不需要空格

使用 \citep 时,作者姓名与年份之间不需要空格

我使用authordate书目样式来引用参考文献,但当我使用时,\citep在作者后和逗号前会插入一个额外的空格。我得到的结果是:

三角形的面积及其导数(Talischi 等人,2009)由以下公式给出......

我想要的是:

此处三角形的面积及其导数(Talischi et al.,2009)由以下公式给出......

我的代码是:

\documentclass[msc,wide,cover,hidelinks,nonomencl,bibkey]{Thesis_AXL_en}
\usepackage{natbib}

    \begin{document}
    The area of a triangle and their derivatives \citep{Talischi_et_al2012b} are given by...

    \bibliographystyle{authordate1-4}
    \bibliography{References}
    \end{document}

.bib文件是:

@Article{Talischi_et_al2012b,
    author       = {Talischi, C. and Paulino, G.H. and Pereira, A. and Menezes, I.F.M.},
    title        = {\textbf{PolyTop: a Matlab implementation of a general topology optimization framework using unstructured polygonal finite element meshes}},
    journal      = {Structural and Multidisciplinary Optimization},
    volume       = {45},
    number       = {3},
    pages        = {329--357},
    year         = {2012},
    publisher    = {Springer}
}

搜索后我找到了主题使用 \citep 时作者姓名后出现不需要的空格,但我没有处理.bst文件的经验,不知道如何解决这个问题。

答案1

这些authordate样式非常古老,并且您的示例实际上并未显示您正在使用 4 个版本中的哪一个,因为没有参考书目样式authordate1-4。但是,我假设样式的版本相似,因此我将向您展示如何解决问题,authordate1.bst并且您可以在需要时将相同的解决方案应用于其他版本。

首先,复制一份authordate1.bst并将其命名为authordate1-nospace.bst。将此副本放入与文档相同的文件夹中(或放入本地texmf文件夹中,如果您可能在其他文档中使用该样式。)

要找到该文件,您可以在终端中键入以下内容并使用该路径找到它。

kpsewhich authordate1.bst

在文件的第 1033 行(或附近),你应该找到

FUNCTION {format.lab.names}
{ 's :=
  s #1 "{vv~}{ll}" format.name$
  s num.names$ duplicate$
  #2 >
    { pop$ " {\em et~al.\ }\relax" * }
    { #2 <
        'skip$
        { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
            { " {\em et~al.\ }\relax" * }
            { " \& " * s #2 "{vv~}{ll}" format.name$ * }
          if$
        }
      if$
    }
  if$
}

改变线路

{ pop$ " {\em et~al.\ }\relax" * }

{ pop$ " {\em et~al.}\relax" * } % removed hard coded space here

并保存文件。然后在您的文档中使用:

\bibliographystyle{authordate1-nospace}

相同的修改也适用于其他版本的文件.bst

我对文件做了最小的更改.bst,解决了您描述的问题。文件中还有其他几个地方有一个硬编码的空格et~al。如果您遇到更多相同类型的空格问题,您也可以尝试删除这些空格,但它们可能是必要的,所以您应该不是除非有充分理由,否则不要更改其他任何内容。

这是一个完整的例子:

\begin{filecontents}{\jobname.bib}
@Article{Talischi_et_al2012b,
    author       = {Talischi, C. and Paulino, G.H. and Pereira, A. and Menezes, I.F.M.},
    title        = {\textbf{PolyTop: a Matlab implementation of a general topology optimization framework using unstructured polygonal finite element meshes}},
    journal      = {Structural and Multidisciplinary Optimization},
    volume       = {45},
    number       = {3},
    pages        = {329--357},
    year         = {2012},
    publisher    = {Springer}
}
\end{filecontents}
\documentclass{article}
\usepackage{natbib}

\begin{document}
    The area of a triangle and their derivatives \citep{Talischi_et_al2012b} are given by...

\bibliographystyle{authordate1-nospace}
\bibliography{\jobname}
\end{document}

代码输出

相关内容