zepinglee / gbt7714-bibtex-style

GB/T 7714-2015 BibTeX Style
LaTeX Project Public License v1.3c
1.16k stars 197 forks source link

正文中引用英文文献作者时 'et al.' 改成“等”以及去掉'et al.' 前后的空格 #120

Closed yangtzech closed 1 year ago

yangtzech commented 1 year ago

目前我使用的方法是:

\citeauthor{key}提出了一种方法 \cite{key}。

得到的结果是

A et al. 提出了一种方法[1]。

但我想要的效果是:

A等提出了一种方法[1]。

citeauthor正文中引用英文论文时, 1、把英文的et al.改成等 2、去掉等前后的空格

我使用的模板是https://github.com/1FCENdoge/SYSUThesis ,尝试了使用\newcommand\bibetal{等} \newcommand\biband{和}没有效果

update: 我找了相关的issue mohuangrui/ucasthesis#95,但是其中提到地ucas分支好像找不到了

zepinglee commented 1 year ago

https://github.com/zepinglee/gbt7714-bibtex-style/blob/b624e169748b8f2886a9330508893a9dcfe89457/gbt7714-2005-numerical.bst#L67

将这里改成 #1andet al. 会以宏的形式输出。

https://github.com/zepinglee/gbt7714-bibtex-style/blob/b624e169748b8f2886a9330508893a9dcfe89457/gbt7714-2005-numerical.bst#L187-L199

yangtzech commented 1 year ago

英文作者中et al. 的确变成了等,但是等的前后还有空格。

个人理解,还应该去掉空格,不知是否正确,以及是否可以实现 1)英文作者中 等 后面的空格应该去掉 A 等 提出了一种方法[1]。 2)中文作者中 等 前后的空格都应该去掉 张三 等 提出了一种方法[1]。

zepinglee commented 1 year ago

姓名与“等”之间的空格是沿用国标的著者-出版年制的格式。

Screenshot 2023-03-19 at 23 32 46

如果想去掉可以将这部分 https://github.com/zepinglee/gbt7714-bibtex-style/blob/b624e169748b8f2886a9330508893a9dcfe89457/gbt7714-2005-numerical.bst#L2194-L2197 改成

        { entry.lang lang.zh =
            'skip$
            { bbl.space * }
          if$
          citation.et.al *
          #1 'namesleft :=
        }

\citeauthor后有一小段空白,而且用luatex 编译出的空白比 xetex 要大。感觉比较复杂,需要再分析 \citeauthor 的底层命令。

\documentclass{ctexart}

\usepackage[sort]{gbt7714}

\begin{document}

陈登原提出了一种\par
\citeauthor{4.1.2:1}提出了一种\par
\citeauthor{4.2.2:3}提出了一种\par
\citeauthor{4.4.2:9}提出了一种

\bibliographystyle{gbt7714-numerical}
\bibliography{standard}

\end{document}

BibTeX 输出的 .bbl 片段:

\bibitem[陈登原(2000)]{4.1.2:1}
陈登原.
\newblock 国史旧闻: 第 1 卷\allowbreak[M].
\newblock 北京: 中华书局, 2000: 29.

\bibitem[陈晋镳{\bibetal}(1980)陈晋镳, 张惠民, 朱士兴, 赵震, and
  王振刚]{4.2.2:3}
陈晋镳, 张惠民, 朱士兴, 等.

xetex:

Screenshot 2023-03-19 at 23 44 12

luatex:

Screenshot 2023-03-19 at 23 44 42
yangtzech commented 1 year ago

好的,我试试。主要是中文环境下感觉留空很奇怪。

yangtzech commented 1 year ago

其实我发现这样用 \citeauthor{} 并不方便, \citeauthor{} 中还要放入 key,但对于英文文献而言,如果使用better bibtex导出key的话,是包含有第一个作者的姓的,直接根据key来写就好了。麻烦你了。