Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

大括号导致作者姓名全部大写失效 #166

Open
KingwithQueen opened this issue Apr 26, 2024 · 10 comments
Open

大括号导致作者姓名全部大写失效 #166

KingwithQueen opened this issue Apr 26, 2024 · 10 comments

Comments

@KingwithQueen
Copy link

编译环境

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

描述问题

无法兼容NASA/ADS数据库上自动生成的引用代码。如图所示,有些姓名无法全部大写,经过测试这是由于author中作者的姓氏被大括号包围。而NASA/ADS数据库上全部都是这种引用风格,这是物理学和天文学专业经常使用的一个网站。可以考虑对此进行兼容吗?

bib 数据库代码:

@ARTICLE{1970A&A.....5..184H,
       author = {{Hagedorn}, R.},
        title = "{Thermodynamics of Strong Interactions at High Energy and its Consequences for Astrophysics}",
      journal = {Astronomy and Astrophysics},
         year = 1970,
        month = apr,
       volume = {5},
        pages = {184},
       adsurl = {https://ui.adsabs.harvard.edu/abs/1970A&A.....5..184H},
      adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}

截图:
image

@zepinglee
Copy link
Owner

BibTeX 中的大括号表示不改变其中的大小写,而且国标的机构作者需要此特性,所以无法在 BibTeX 这边处理。

建议使用其他工具处理该姓名。

Screenshot 2024-04-27 at 07 15 05

@KingwithQueen
Copy link
Author

好的,话说我能否修改您的代码来兼容我提到或未提到的问题,并打包分发(在学校的QQ群,甚至学校官网和GITHUB上)?我会在分发的说明中注明bst的来源和作者等信息。我希望构建一个符合广西大学硕博毕业论文的模板。虽然学校要求是完全按照GB/T 7717标准的,但由于物理学院经常使用的一些网站所提供的bib引用代码不太规范,因此我可能需要做额外的修改或单独写一个文件来调整bib引用代码。我注意到许可中的第五条,所以这是否意味着我上述的计划是被默认许可的?
5. If you are not the Current Maintainer of the Work, you may modify your copy of the Work, thus creating a Derived Work based on the Work, and compile this Derived Work, thus creating a Compiled Work based on the Derived Work.

@stone-zeng
Copy link
Contributor

建议是在录入 bib 数据库处理大括号 / 大写小写问题,如果在 bst 里面修改,那真的需要使用小写的时候就没办法了。

@KingwithQueen
Copy link
Author

建议是在录入 bib 数据库处理大括号 / 大写小写问题,如果在 bst 里面修改,那真的需要使用小写的时候就没办法了。

那个是NASA的数据库,我们肯定没法改。我也很头疼这个问题,最好的办法就是别用那个数据库提供的引用。毕竟有些期刊和NASA/ADS数据库提供的引用信息也不太兼容。但我想分发一个符合学校要求的通用latex模板给其他人使用,这个数据库我们整个系都在用,到时候很可能会出现大面积翻车。我原本计划是提供两个bst文件,一个保持默认不取修改大括号内的东西,另一个则强制全部大写。我刚才检查了一下,有些小语种名字确实出现了个别字母必须小写的情况。可能最好的办法还是在bib的数据源进行调整。

@stone-zeng
Copy link
Contributor

我的意思是,不要自动获取 bib……

各个期刊、网站、数据库提供的 bib 格式都不尽相同,写论文的时候建议人工干预一下。

@KingwithQueen
Copy link
Author

我的意思是,不要自动获取 bib……

各个期刊、网站、数据库提供的 bib 格式都不尽相同,写论文的时候建议人工干预一下。

好的,我明白了你意思了。我折腾了几天也发现这个问题了,全靠代码来解决不同网站提供bib格式不同的问题工程量太大了。

@zepinglee
Copy link
Owner

好的,话说我能否修改您的代码来兼容我提到或未提到的问题,并打包分发(在学校的QQ群,甚至学校官网和GITHUB上)?

当然可以。建议使用你们学校/学院的名称命名 .bst 文件。

另一个则强制全部大写。

应该也能实现,但是使用 bst 语言非常麻烦,大致是:

  1. 判断是否有 first name(排除 author = {{Online Computer Library Center}} 的情况);
  2. 判断 last name 两端是不是大括号。
  3. 检查两端的大括号是否匹配(排除 {\'E}e{\'e} 的情况)。
  4. 移除两端的大括号。

@KingwithQueen
Copy link
Author

KingwithQueen commented Apr 28, 2024

应该也能实现,但是使用 bst 语言非常麻烦,大致是:

  1. 判断是否有 first name(排除 author = {{Online Computer Library Center}} 的情况);
  2. 判断 last name 两端是不是大括号。
  3. 检查两端的大括号是否匹配(排除 {\'E}e{\'e} 的情况)。
  4. 移除两端的大括号。

bst 语言确实不好写,我也不是很熟悉这个语言。我目前有两个想法:

  1. 我应该可以写一个 C 或 Python 程序并打包成二进制文件(或修改sty文件在运行前先调用 python.exe 运行 Python 代码)。有办法让bst文件在处理bib文件中的引用数据前,先调用某个外部程序,而后接收外部程序返回的bib数据继续运行吗?
  2. 在latex中定义一个新的命令,引用bib文件时先调用外部程序,按照预先规则处理原始引用数据,并产生一个临时 .bib 文件,而后调用 \bibliography 加载临时 .bib文件。

@zepinglee
Copy link
Owner

刚刚想到可以使用 LaTeX 的 \MakeUppercase,这样不受 BibTeX 的大括号大小写规则影响。见 issue#166 分支。

测试效果:

\bibitem[{Hagedorn}(1970)]{1970A&A.....5..184H}
\MakeUppercase{{Hagedorn}} R.
\newblock {Thermodynamics of Strong Interactions at High Energy and its
Consequences for Astrophysics}\allowbreak[J].
\newblock Astronomy and Astrophysics, 1970, 5: 184.
\end{thebibliography}

\bibitem[{Online Computer Library Center, Inc}({[2012]})]{4.6.2:4}
{Online Computer Library Center, Inc}.
\newblock About {OCLC}: History of cooperation\allowbreak[EB/OL].
\newblock \allowbreak[2012-03-27].
\newblock \url{http://www.oclc.org/about/cooperation.en.html}.

@KingwithQueen
Copy link
Author

刚刚想到可以使用 LaTeX 的 \MakeUppercase,这样不受 BibTeX 的大括号大小写规则影响。见 issue#166 分支。

测试效果:

\bibitem[{Hagedorn}(1970)]{1970A&A.....5..184H}
\MakeUppercase{{Hagedorn}} R.
\newblock {Thermodynamics of Strong Interactions at High Energy and its
Consequences for Astrophysics}\allowbreak[J].
\newblock Astronomy and Astrophysics, 1970, 5: 184.
\end{thebibliography}

\bibitem[{Online Computer Library Center, Inc}({[2012]})]{4.6.2:4}
{Online Computer Library Center, Inc}.
\newblock About {OCLC}: History of cooperation\allowbreak[EB/OL].
\newblock \allowbreak[2012-03-27].
\newblock \url{http://www.oclc.org/about/cooperation.en.html}.

非常感谢,试了一下可以

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants