我的 biblatex 样式包由一个 standard.bbx 文件和一些 .bbx、.cbx、.dbx 和 .lbx 文件组成(该包提供了不同的引用样式;因此 standard.bbx 包含参考书目样式的通用代码)。
最佳实践涉及 .def 文件的存在,但分析biblatex
包和其他 biblatex 样式时,我很难弄清楚将什么内容正确包含在 .def 文件中。
我知道,对于我的 biblatex 样式的正常运行来说,这个问题无关紧要,而且从理论上讲,我还不如将 standard.bbx 的全部内容写入 .def 文件中。但是,我希望代码尽可能保持整洁。
目前我的standard.bbx文件的内容如下:
- 警告和错误消息的定义
- 动态源映射(\DeclareStyleSourcemap)
- 切换 (\newtoggle) 和选项 (\DeclareBibliographyOption) 的声明
- 执行全局选项(\ExecuteBibliographyOptions)
- 重新定义标点符号、字符串和字段格式
- 布尔条件的定义(\def\if[foo])
- 命令定义
- 新 bibmacro 的定义(\newbibmacro)
- 重新定义 bibmacro (\renewbibmacro)
- 书目驱动程序声明(\DeclareBibliographyDriver)
- bibcheck 的定义(\defbibcheck)
- 排序模板的定义(\DeclareSortingTemplate)
- 使用 \DeclareLanguageMappingSuffix
- \NewBibliographyString 的使用
- 新的 bibenvironment 的定义(\defbibenvironment)
上述哪些项目可以合理地放入 .def 文件中?
答案1
biblatex
对样式施加的结构约束biblatex
不包括.def
文件。
- 您需要一个
.bbx
用于参考书目样式的文件和一个.cbx
用于引用样式的文件。(至少在理论上,这个想法是,您可以使用这两个文件整齐地分离参考书目和引用 bibmacros 等,并且用户可能有机会加载不同的参考书目和引用样式。实际上,并不总是清楚某个宏是否应该放入.bbx
或.cbx
文件,并且某些样式非常复杂,以至于几乎不可能解开定义,因此只有同时加载和时它们才能工作.bbx
。.cbx
) - 如果需要修改默认数据模型,则需要一个
.dbx
文件。 - 如果您的风格需要超出标准的本地化
biblatex
,或者您需要修改标准的本地化biblatex
,您还需要包含.lbx
文件。
所有这些文件都是通过biblatex
、其选项和其他功能加载的。如果您希望样式包含不同类型的其他文件,则需要自己加载这些文件。(我的biblatex-ext
包中的样式ext-biblatex-aux.def
都有一行明确加载该文件。)
我认为最佳实践并不要求你必须有一个.def
文件。一些更复杂的样式确实有文件,并且在某种程度上受益于文件。但也有很多可靠的样式没有。
因为biblatex-ext
我使用了一个.def
文件来定义辅助命令和向后兼容代码,我觉得这些代码无法整齐地放入.bbx
或.cbx
文件中。
由于标准biblatex
有一个.def
文件 ( biblatex.def
),其中定义了一些更通用的“构建块宏”,因此一些更复杂样式的作者可能倾向于遵循该做法,并在其中提供对参考书目和引用样式都有意义的定义。(但请注意,核心biblatex
显然是一个特殊情况:biblatex.def
始终自动加载。提供一些有用的 bibmacros 以确保它们始终被定义,即使没有加载核心样式,也是有意义的。.def
其他样式的 s 需要由这些样式明确加载。)