100 如何读懂并修改`.bst`文件

发布于 2025-04-16 17:33:31

将群友的某个需求移动到这里。

有一个私有mystyle.bst文件:mystyle.bst

以及下面的MWE:

% main.tex
\documentclass[fontset=fandol]{ctexart}
\begin{filecontents*}[overwrite]{ref.bib}
@phdthesis {满红2014CSTR,
    author = { 满红 },
    title = {CSTR过程的模型辨识及其非线性预测控制方法研究},
    school = {大连理工大学},
    year = {2014}
}
\end{filecontents*}
\bibliographystyle{mystyle}
% \usepackage{gbt7714}
% \bibliographystyle{gbt7714-numerical}
\begin{document}

你好,世界\cite{满红2014CSTR}。
\bibliography{ref.bib}

\end{document}

目前得到的效果是:

image.png

希望得到的效果是:

  • 去掉奇怪的[S.l.]
  • 不希望增加address={}等entry而显示更多的信息

效果示例如下:

[1] 满红.CSTR过程的模型辨识及其非线性预测控制方法研究[D].大连理工大学,2014.

如何魔改mystyle.bst? 诚邀S老师@u79794 解答~

Notes: 比较希望得到定位.bst关键信息的过程,同时又是根据什么参考文档做修改的思路,而不仅仅是得到魔改后的结果。

查看更多

关注者
0
被浏览
143
Skyrmion
Skyrmion 2天前
Looking forward to my Ph.D. offer...

谢邀. 在这里主要介绍下查找思路:
首先编译你的这个 MWE,而后会生成一个 *.bbl 文件,这个是可以直观的查看最终 PDF 输出的内容的,发现里面:

\bibitem{满红2014CSTR}
满红.
CSTR过程的模型辨识及其非线性预测控制方法研究~[D].
[S.~l.]: 大连理工大学, 2014.

根据你的要求,那么我们检索 S.~l.,发现 *.bst 里 140 行

FUNCTION {bbl.sine.loco}   { language empty$ { "S.~l." } { "出版地不详" } if$ }

得知这个输出由函数 bbl.sine.loco 控制,那么我们就搜索这个函数,这时会在额外 5 处搜到(可能对应不同的 if 判断,实测只有第 1861 行有效)

1860 -- 1862 行原始如下:

address empty$
    {
      "[" bbl.sine.loco * "]" * bbl.colon * % 无出版地
      school empty$

很好理解,意思就是

"["           bbl.sine.loco * "]" *         bbl.colon
左方括号 S.~l.                  右方括号 冒号

刚好和你的截图对应. 这几行处理后如下

address empty$
    {
      % "[" bbl.sine.loco * "]" * bbl.colon * % 无出版地
      "" school empty$

注意到在注释掉这个function同时,还要在 school empty$ 前加 "",否则会报错(你理解为“助动词”好了)

不过其他基础我也给你改了,改好的 *.bst 见附件.

image.png

mystyle.bst

1 个回答

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览