HUST-PhD-Thesis-Latex icon indicating copy to clipboard operation
HUST-PhD-Thesis-Latex copied to clipboard

参考文献作者数量问题

Open RainerTian opened this issue 2 years ago • 4 comments

华中科技大学博士、硕士学位论文撰写规定中说(http://gs.hust.edu.cn/info/1019/11815.htm)

3.可列于参考文献表的文献类型包括图书、期刊、会议论文集、专利和学位论文等。其著录格式分别如下(注意标点符号):

(1) 图书: [顺序编号] 作者(采用姓在前,名在后的形式,作者名之间用逗号分隔;3人以内全部写上,3人以上只写3人再加“等”(英文加“ et al”)).书名.版本(第×版).译者.出版地:出版者,出版年. 起页~止页

(2) 期刊:[顺序编号] 作者(采用姓在前,名在后的形式,作者名之间用逗号分隔;3人以内全部写上,3人以上只写3人再加“等”(英文加“ et al”)).文章名称.期刊名称,年号,卷号(期号):起页~止页

(3) 会议论文集:[顺序编号] 作者(采用姓在前,名在后的形式,作者名之间用逗号分隔;3人以内全部写上,3人以上只写3人再加“等”(英文加“ et al”)).文章名称.见(英文用“in”):论文集主编.论文集名.出版地:出版者,出版年. 起页~止页

而我们这个模板里是最多显示6人,这个可以在哪里修改吗?谢谢回复

RainerTian avatar Dec 07 '22 03:12 RainerTian

华中科技大学博士、硕士学位论文撰写规定中说(http://gs.hust.edu.cn/info/1019/11815.htm)

3.可列于参考文献表的文献类型包括图书、期刊、会议论文集、专利和学位论文等。其著录格式分别如下(注意标点符号):

(1) 图书: [顺序编号] 作者(采用姓在前,名在后的形式,作者名之间用逗号分隔;3人以内全部写上,3人以上只写3人再加“等”(英文加“ et al”)).书名.版本(第×版).译者.出版地:出版者,出版年. 起页~止页

(2) 期刊:[顺序编号] 作者(采用姓在前,名在后的形式,作者名之间用逗号分隔;3人以内全部写上,3人以上只写3人再加“等”(英文加“ et al”)).文章名称.期刊名称,年号,卷号(期号):起页~止页

(3) 会议论文集:[顺序编号] 作者(采用姓在前,名在后的形式,作者名之间用逗号分隔;3人以内全部写上,3人以上只写3人再加“等”(英文加“ et al”)).文章名称.见(英文用“in”):论文集主编.论文集名.出版地:出版者,出版年. 起页~止页

而我们这个模板里是最多显示6人,这个可以在哪里修改吗?谢谢回复

感谢指出问题。

您好,参考https://tex.stackexchange.com/questions/26575/bibtex-how-to-reduce-long-author-lists-to-firstauthor-et-al,在HUSTThesis.bst文件的296行和298行,将#6替换为#3,即可。

XinzeZhang avatar Apr 15 '23 09:04 XinzeZhang

image 您好,还有一个问题向您请教,说这个参考文献的作者按英文习惯写法,名在前、姓在后,名和姓均用全称,如果作者名超过两个单词,中间名使用简称,如“C.”,不要混用。3人以内列出全部作者,3人以上列出3人再加“等”(英文加“et al”)。这个需要怎么调整代码,麻烦您了

RainerTian avatar May 14 '23 17:05 RainerTian

@RainerTian 三人以上列出再加等(英文加“et al”)。 在bst文件 进行如下修改:

FUNCTION {bbl.cn.etal}
{ "等." }

FUNCTION {format.names}
{ 's :=
  #1 'nameptr :=
  s num.names$ 'numnames := 
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr
      "{f.~}{ll}"
      format.name$
      %bibinfo bibinfo.check
      't :=
      nameptr #1 >
        {
          nameptr #3
          #1 + =
          numnames #3
          > and
            { "others" 't :=
              #1 'namesleft := }
            'skip$
          if$
          namesleft #1 >
            { ", " * t * }
            { numnames #2 >
              { "" * }
              'skip$
              if$
              s nameptr "{ll}" format.name$ duplicate$ "others" =
                { 't := }
                { pop$ }
              if$
              t "others" =
                {
                  lang empty$
                    { ", " * bbl.etal * }
                    { lang "chinese" =
                       { ", " * bbl.cn.etal * }
                       'skip$
                      if$
                    }
                  if$
                }
                {
                  lang empty$
                    { ", " * t * }
                    { lang "chinese" =
                       { ", " * t * }
                       'skip$                   
                     if$
                    }
                  if$
                } 
              if$
            }
          if$
        }
        't
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
}

XinzeZhang avatar May 15 '23 11:05 XinzeZhang

@RainerTian 对于姓、名、中间名的处理,参考 https://tex.stackexchange.com/questions/122334/how-to-remove-a-period-from-middle-initial-in-bst-file-while-leaving-first-name 中的回答。

As JLDiaz answered: ‘’‘ This string specifies the required format for the name of each author. vv represents the "von" part (if it exists) ll is the full last name, jj is the "junior" part of the name (if it exists) and finally ff would be the full first name, while f is the initial of the first name. Commas and dots are literals and are added in the output. ’‘’

可以尝试将"{f.~}{ll}"替换为"{ff~}{v.~}{j.~}{ll}"

XinzeZhang avatar May 15 '23 11:05 XinzeZhang