zepinglee / gbt7714-bibtex-style

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

著者-出版年制排序存在问题 #68

Closed CamuseCao closed 4 years ago

CamuseCao commented 4 years ago

编译环境

宏包版本:gbt7714 v1.0 标注样式:authoryear

描述问题

根据国标要求,以及文档中的例子,使用著者-出版年制时

“张三, 李四”要排在“张三丰”前面。 但是实际得到的结果不正确。

bib 数据库代码:

    @article{zhangsan,
    title={高等数学教学},
    author={张三 and  李四},
    key={zhang1 san1  li3 si4},
    journal={大學數學},
    volume={23},
    number={4},
    pages={20--26},
    year={2007},
    publisher={大學數學編輯部}
  }

  @article{zhangsanfeng,
    title={高等数学教学改革研究进展},
    author={张三丰},
    key={zhang1 san1 feng1},
    journal={大學數學},
    volume={23},
    number={4},
    pages={20--26},
    year={2007},
    publisher={大學數學編輯部}
  }

正文代码:

\documentclass{ctexart}
\usepackage{gbt7714}
\bibliographystyle{gbt7714-author-year}
\begin{document}
引用\cite{zhangsan},再来一个\cite{zhangsanfeng}。
\bibliography{Re}
\end{document}

截图: image

zepinglee commented 4 years ago

这是因为 BibTeX 处理所有域的信息时会先进行“purify”的操作,其中包括把相连的多个空格压缩为单个空格。比如在 bib 中著录

title = { Foo   Bar  },

在 BibTeX 中自动处理为 "Foo Bar"

我之前没写测试,所以疏忽了这个问题。

解决方案是使用“ & ”作为姓名拼音的分隔符。当然,更推荐使用 biblatex 处理中国姓名的排序。

hushidong commented 4 years ago

使用 biblatex 处理中文姓名的排序,处理一般情况基本没啥问题,但处理按拼音排序时在多音字问题上也还不够完美,目前我也还是用key来解决。更深层次的需要去改perl模块,没那么多精力了。

但是弄个文本处理,来给bib加个key域会来的方便些。但这个工具放到什么里头需要考虑下,要方便使用,是用perl写,还是用python写,还涉及系统环境。