Closed zepinglee closed 1 year ago
我提议将 bibtex 的接口
\bibliography
改为\addbibresource
和\printbibliography
,同biblatex
一致,这样就只需要修改thusetup.tex
就可以了。】我读过(也抄过)
fduthesis
里面的相关代码,觉得曾老师的封装方案已经很完备了,可以直接借来用。新功能也可以直接拿 L3 写,就作为重构的一部分了。
@atxy-blip 我记得 fduthesis
是设置 bib-backend
选择 bibtex/biblatex 的吧?但我更倾向于让用户加载宏包的方式进行控制,比如 \usepackage{natbib}
和 \usepackage[...]{biblatex}
。这样更加灵活,比如切换成 citation-style-language
也不必修改太多模板代码(如 https://github.com/tuna/thuthesis/issues/844#issuecomment-1508020710)。
我记得
fduthesis
是设置bib-backend
选择bibtex/biblatex
的吧?
是这样的,fduthesis
把载入宏包的部分也封装好了,在下面。这样做的好处是能把附属功能一并做成选项,比如顺序编码制和著者-出版年制的样式控制、批量载入 .bib
文件等。如果让用户手动载入,额外的功能或许都要写进钩子里面?
让用户手动载入 natbib
然后写 \addbibresource
可能也有点违反直觉……
关于灵活性,我在自己的项目里只做了 biblatex
的兼容,然后提供了可以选择禁用模板的全部参考文献设置的选项,从而保留了用户的自由。或许可以作为思路参考。
是这样的,
fduthesis
把载入宏包的部分也封装好了,在下面。这样做的好处是能把附属功能一并做成选项,比如顺序编码制和著者-出版年制的样式控制、批量载入.bib
文件等。如果让用户手动载入,额外的功能或许都要写进钩子里面?
对。
像 biblatex
会加载 hyperref
,而有的宏包(比如 cleverref
)需要在 hyperref
后加载,这种情况如果用选项的方式在 \AtEndPreamble
加载宏包就很不方便。但让用户手动写 \usepackage
就比较自然。
让用户手动载入
natbib
然后写\addbibresource
可能也有点违反直觉……
确实有点。那主文档 bibtex 参考文献还是保留 \bibliography
吧。附录的参考文献改成 \printbibliography
,默认使用主文档设置的 .bib
文件。bibunits
原来的命令是 \putbib[<bibfile>]
,为了让用户更上手才改成了 \bibliography
的。
像 biblatex 会加载 hyperref,而有的宏包(比如 cleverref)需要在 hyperref 后加载,这种情况如果用选项的方式在 \AtEndPreamble 加载宏包就很不方便。但让用户手动写 \usepackage 就比较自然。
关于这一点,是否可以参考tabularray
的\UseTblrLibrary{}
呢?也弄一个这样的命令,实际效果就是底部下载。
补充一点,有些编辑器会根据 \bibliography{...}
来判断和解析参考文献数据,并提供一些辅助功能。如果不用这个反而会破坏这些功能。
关于这一点,是否可以参考
tabularray
的\UseTblrLibrary{}
呢?也弄一个这样的命令,实际效果就是底部下载。
我不喜欢这种设计。
比如 amsmath
有的选项只能在加载的参数中设置,用 \UseTblrLibrary
就得用 \PassOptionsToPackage
特殊处理。还有如果文档类已经调用了 amsmath
,不知道 tabularray
能不能正确处理。
理想的结果是,加载宏包的顺序不影响输出。使用 file hook 基本都能解决。
补充一点,有些编辑器会根据
\bibliography{...}
来判断和解析参考文献数据,并提供一些辅助功能。如果不用这个反而会破坏这些功能。
\addbibresource
应该也会读吧?
补充一点,有些编辑器会根据
\bibliography{...}
来判断和解析参考文献数据,并提供一些辅助功能。如果不用这个反而会破坏这些功能。
对了 fduthesis 会有这个问题吗?
对了 fduthesis 会有这个问题吗?
如果用 bib-resource
填写数据源,确实可能在 TeXStudio 没法补全 citation key,后来还是补了一个 \addbibresource
(https://github.com/stone-zeng/fduthesis/pull/229)。
比如 amsmath 有的选项只能在加载的参数中设置,用 \UseTblrLibrary 就得用 \PassOptionsToPackage 特殊处理。
确实不够优雅,需要用户额外学习,但是也可以将可选参数传进去。
xduts的字体也是在后面设置的,导致circledtext
正常加载的话,无法正确设置字符宽度,只能将circledtext
在后面加载,我目前还没想到什么好的办法。字体在文档类参数里设置就不会有这个问题,但是我还想要在\xdusetup
里设置,这样更统一。
还有如果文档类已经调用了 amsmath,不知道 tabularray 能不能正确处理。
tabularray
仅对amsmath
、booktabs
、counter
、diagbox
、functional
、nameref
、siunitx
、varwidth
、zref
做了特殊处理,这几个宏包使用\UseTblrLibrary
加载会进行特殊处理。我记得没错的话,其他宏包使用甚至会报错。
如果在tabularray
之前正常加载的宏包,仅有xcolor
和hyperref
会自动做一些处理。
@Harry-Chen 感觉可以发布一个新版本了。
@Harry-Chen 感觉可以发布一个新版本了。
好的,今天发布,应该刚好是在研究生提交论文之前。
目前有多处
\bibliography
,如果用户将默认的 bibtex 方案改为 biblatex,需要将这些都修改为\printbibliography
,不太方便。我提议将 bibtex 的接口
\bibliography
改为\addbibresource
和\printbibliography
,同 biblatex 和 citation-style-language 一致,这样就只需要修改thusetup.tex
就可以了。https://github.com/tuna/thuthesis/blob/c208916d15b1e839c10b0b2d6f129e0caf7ac23f/thusetup.tex#L148-L167
初步想法:
\bibliographystyle
和\bibliography
。\printbibliography[]
如果有参数则给出警告。\bibliographystyle
也设置附录中的默认 bib style(bibunits
的\defaultbibliographystyle
)。另外 stone-zeng/fduthesis 目前就是这么处理的。
Originally posted by @zepinglee in https://github.com/tuna/thuthesis/issues/837#issuecomment-1542274625