将“作者”字段中的连接器从“and”更改为“,” IEEEtranN 书目样式

将“作者”字段中的连接器从“and”更改为“,” IEEEtranN 书目样式

我正在使用 Natbib,并试图让我的参考书目中的作者看起来像

Bryan Sullivan, Vincent Liu

但目前他们看起来像

Bryan Sullivan and Vincent Liu

我曾尝试使用

\renewcommand{\multinamedelim}{\addsemicolon\space}

但它不起作用,它说 \multinamedelim 不存在。

我正在添加参考书目如下:

@book {
    WebApplicationSecurity,
    author = {{Bryan Sullivan} and {Vincent Liu}},
    title = {Web Application Security, a Beginner's Guide},
    publisher = {McGraw Hill},
    year = {2011}
}

我也尝试过将此代码中的“and”改为逗号,但第二位作者就完全消失了。

我正在使用 XeLaTeX 进行编译。如有任何帮助,我将不胜感激

答案1

好的,我是新手(接触 LaTeX 大约 1 年,甚至更新 bst),所以请多多包涵,但我想我已经明白了:

修改 IEEEtranN.bst,使得 FUNCTION {format.names} 内容如下:

FUNCTION {format.names}
{ 'bibinfo :=
  duplicate$ empty$ 'skip$ {
  this.to.prev.status
  this.status.std
  's :=
  "" 't :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr
      name.format.string
      format.name$
      bibinfo bibinfo.check
      't :=
      nameptr #1 >
        { nameptr num.names.shown.with.forced.et.al #1 + =
          numnames max.num.names.before.forced.et.al >
          is.forced.et.al and and
            { "others" 't :=
              #1 'namesleft :=
            }
            { skip$ }
          if$
          namesleft #1 >
            { ", " * t do.name.latex.cmd * }
            { s nameptr "{ll}" format.name$ duplicate$ "others" =
                { 't := }
                { pop$ }
              if$
              t "others" =
                { " " * bbl.etal emphasize * }
                { numnames #2 >
                    { "," * }
                    { "," * } %%%%%%%%%%%%% added this line
                    %{ skip$ } %%%%%%%%%%%%% commented out this line
                  if$
                  %bbl.and %%%%%%%%%%%%% commented out this line
                  space.word * t do.name.latex.cmd *
                }
              if$
            }
          if$
        }
        { t do.name.latex.cmd }
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
  cap.status.std
  } if$
}

这应该会改变所有类型的名称格式,如下所示。希望对您有所帮助!

在此处输入图片描述

编辑:如果您希望更改文中引用格式以及参考书目格式,请按照@Mico 的回答进行操作:https://tex.stackexchange.com/a/506121/169285(需要注意的是 - 它也会改变“format.lab.names”,但我不完全确定这会有什么作用)。

编辑2:MWE:

\documentclass{article}
\usepackage{natbib}

\begin{document}

Stuff happened \cite{WebApplicationSecurity}.

\newpage
\bibliographystyle{IEEEtranN}
\bibliography{mybib.bib}

\end{document}

相关内容