我在使用 CTAN 上的自定义样式时遇到了一些麻烦。这是biblatex-瑞士法律在我的 MWE 中,它基本上不产生任何输出,尤其是不以预期的格式。默认样式工作正常(注释行)。
目标与要求
我的目标是使用 Latex 自动生成一组文档。处理需要半自动化,使用其他语言的一些脚本生成最终 PDF。最终目标是 (1) 检索单独的代码,(2) 合并它们,然后 (3) 使用 latex 生成完整的 PDF。
我的限制是它需要遵循瑞士法律对引用的要求。因此,引用的格式非常棘手,这是我制作工作原型的最后步骤。
从这里的其他一些问题中,我可以推断出这个 biblatex 风格的包稍微过时了。我基本上没有为 biblatex 创建自定义样式的经验。此外,我还有一些进一步的限制,因为我的最终文档需要:
- 在法语或德语中,因此使用
polyglossia
&csquotes
- 自定义字体,因此使用编译
xelatex
- 使用缩写(MWE 中没有缩写),因此使用
glossaries
问题 1——努力更新完整的软件包?
更新软件包需要付出哪些努力?有没有关于如何将整个软件包移植到“新” biblatex 格式的文档?
问题 2 - 我怎样才能只选择相关部分?
这种风格的大部分代码都不会用到。还有很多其他函数我不需要。
因此,我怎么能只取“文章”部分,然后将其插入到单独的样式中呢?我不确定需要什么,而且我的第一次尝试产生了很多错误。
最后说明
这是我在 SO 和 TeX 论坛上的第一篇文章。因此,请告诉我是否可以/如何改进我未来的投稿。谢谢!
MWE 代码
% MweBiblatex Swiss Legal
\documentclass{article}
% Needed by Biblatex
\usepackage{polyglossia}
\setmainlanguage{french}
\usepackage{csquotes}
\usepackage[style=biblatex-swiss-legal-general, backend=biber, bibencoding=UTF8]{biblatex}
% \usepackage[backend=biber, bibencoding=UTF8]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
{
@book{druey,
author = {Druey, Jean-Nicolas},
title = {Grundriss des Erbrechts, 6e ed.},
publisher = {Aucun},
date = {2016},
location = {Berne},
}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
En matière de successions, le CC offre aux héritiers plusieurs façons de procéder \cite{druey}.
My goal as a real citation and as pseudo-code in the reference table and in a citation
\textsc{Druey} Jean-Nicolas, \textit{Grundriss des Erbrechts, 6e ed}, Berne 2016
And this should be cited as : "\textsc{Druey}"
\printbibliography
\end{document}
答案1
最新版本biblatex-swiss-legal
可以追溯到 2014 年 1 月。主要开发似乎发生在 2012 年,2013 年发布了错误修复版本。2014 年版本似乎添加了一些新功能。所以这种风格已经有五年多了。
一般而言,我们无法给出旧式风格变坏、不能或不应再使用的分界点。没有“旧”和“新” biblatex
,每次都会有一个版本进步。
然而,有一个重大biblatex
变化影响了许多风格:biblatex
3.3 以向后不兼容的方式显著改变了名称处理。请参阅Biblatex 3.3 名称格式。2016 年 3 月 3.3 版发布之前编写的许多样式都会出现问题。根据这些样式对名称宏内部的深入程度,它们可能会安然无恙,因为现有的兼容性代码对它们有效,如果兼容性代码捕获了某些情况但不是全部情况,它们可能会在某些情况下产生不理想的输出,或者由于它们使用没有兼容性代码的过时宏而导致错误。
内部还有其他一些(较小的)变化:最近的一次是在 3.8 版本中,其中一些字段名称和宏被重命名。https://github.com/plk/biblatex/wiki/Name-Changes
我们非常小心[需要引用],只对内部进行必要的更改,并且至少采取了一些措施来提供向后兼容性。但如果要让软件包继续发展,就不可能总是不破坏现有的风格。
此外,新版本有时会实现更优雅或更稳定的方式来完成某些事情,使用新方法可以大大受益于样式。但这并不意味着旧样式会失败。这只是意味着,在调整旧样式时,人们应该始终寻找新的命令,使生活比几年前更轻松。
回答您的问题:
这需要做多少工作?
一开始,我们无法真正知道让软件包重新启动并运行需要做多少工作。但我认为,如果人们不只是想要修补不起作用的部分,而是希望使风格现代化以使用新功能,那么这将需要付出相当大的努力。您不仅需要了解您的biblatex
,还需要对预期的输出有一个很好的理解。仅从代码对软件包进行现代化改造,而没有关于输出应该是什么样子的明确指导,这是相当棘手的(您永远不知道是否使用了不寻常的代码来实现预期输出的特定怪癖,因为在第一次编写软件包时没有更简单的代码,或者完全出于其他原因)。
有文档吗?
没有关于将某些内容移植到“新biblatex
格式”的文档,因为根本就没有这种东西。对于许多特定的更改,您会在本网站上找到一个问题来帮助您Biblatex 3.3 名称格式,评论biblatex
变化.md或文档中的版本历史记录。运行过时的样式时收到的警告和错误消息通常已经可以提示发生了什么。
从我从包代码中看到的情况来看,你的主要问题是新的名称格式。足足有 120 行代码处理名称,其中大部分需要现代化。排序方案(现在是排序模板)也需要更改。其余代码的大部分看起来相当可靠,尽管它并不总是遵循包编写后建立的最佳实践。很少有代码看起来有点奇怪(有些人评论说作者意识到了这一事实)。
我怎样才能通过手术将@article
其取出并植入其他地方?
如果您只想保留样式的某些部分,则需要复制您感兴趣的部分。然后,您需要跟踪和检查感兴趣部分中使用的命令和宏的定义。您必须复制您感兴趣的代码可能使用的每个宏和定义。您还必须复制您想要的行未明确调用但仅隐式调用的代码。我在这里猜测,但我想说,如果只想复制@book
和@article
中的代码biblatex-swiss-legal
,您很容易最终复制大约三分之二的原始代码。
虽然只采用您预计需要的代码部分的方法可能适用于与biblatex
标准样式足够相似的样式,但我怀疑它在这里是否可行。
那么您在这里有什么选择?
您的第一步应该是尝试联系 的维护者biblatex-swiss-legal
。该软件包的开发已停滞,但也许他们仍在使用它或私下开发它,您可能会很幸运。不过,不要抱太大希望。
如果您无法联系维护人员,或者他们无法帮助您让软件包回到正轨,您有两种选择:
- 尝试使软件包现代化(理想情况下,在获得原始维护者的许可后,您可以成为该软件包的新维护者,如果当前维护者没有响应,LPPL 允许接管维护)。
- 从头开始编写一个新包。
我更倾向于第二种方法。从头开始的巨大优势在于,你不必被迫采用与 相同的策略biblatex-swiss-legal
,但如果你遇到困难,你可以从他们的代码中获得灵感。
该文件的更新版本.bbx
可在以下网址获取:https://gist.github.com/moewew/c15dcbe6a7a23e007a9ed65b7d7aa567。这只是紧急修复,文件不予维护。