-
-
Notifications
You must be signed in to change notification settings - Fork 98
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
CSL support #2082
base: master
Are you sure you want to change the base?
CSL support #2082
Conversation
0f5d659
to
330cd9d
Compare
2024/07/14 "Stage 0" milestone: Successfully processed 1355 references
|
d08cbaf
to
f6b9b65
Compare
2024/07/20 "Stage 1" milestone: Successfully processed 1508 references,
|
Soon leaving for vacations, so here are just some advancement notes to myself, in order to remember:
That's a minimal set. There would still be a few missing features from the CSL spec, but at least all Chicago-styles would be covered fairly decently, and a first milestone would be passed. |
f6b9b65
to
dca5de9
Compare
Note that these files are licensed under CC-BY-SA 3.0 and are only included as a default minimal set for testing.
dca5de9
to
87e9264
Compare
Slowly back on track. |
ac68bef
to
d020ba5
Compare
ccf2cde
to
dea1be4
Compare
c407336
to
c775542
Compare
I hate names with particles, definitively. 🤣 -- Doh, it was hard for my tired brain. One checkbox ticked. |
5610759
to
3f89664
Compare
The wild landscape of subsequent author substitutions (Or the reason why something started weeks ago and announced in a previous comment takes so long!) There are lots and lots of styles in the CSL repository. They don't all use subsequent-author-substitute, but when they do (approx. 297 styles), there are around 35 different patterns. This doesn't mean much, so let's detail. It boils down to 7 different categories. With possibly some approximations and simplifications:
This brings a few considerations.
Leaving aside the block/column cases for now, full/strict compliance is still complex and not that great typographically. I'll head therefore towards a few (debatable) "shortcuts"... Then, there's the But there's still another trap: "Substitution is limited to the names of the first The devil is in the details, as always. Yet, however many shortcuts are taken here, it's still superior to the "legacy" implementation we had. Simon's old 400-500 LoC experiment (682bbc5) has lived long since 2015. Whether the present 2000-2500 LoC re-implementation will fare as long, only time will tell. So it's a 80-20 situation. The 80% of the work is done, and the 20% remaining is the most complex to achieve. Whether it's really needed is hard to ascertain. |
This should even be the default when generating a bibliography.
After citeproc-java, let's check also citeproc-lua.
…phies Honor the page-range-delimiter from the locale.
We can use the bibtex.style setting to help switching implementations We can also ensure printbibliography works with legacy citations. This will make deprecations and transition easier.
80c1fa7
to
34f774e
Compare
Rebased commits just had |
Closes #2074
It already does nice things (see screenshots in the referred issue).
In order to support CSL (Citation Style Language), we need to:
Regarding the conversion of BibTeX entries, the mappings are not straightforward, but there is some prior art that we can check... None of the implementations I checked did the exact same things, so it's likely a bit messy...
Regarding the CSL engine, there are various existing implementations.
Yet, I had a look at them, and I am not really convinced by their code quality, so I went implementing the CSL 1.0.2 specifications from scratch. Because it's fun, and SILE has the guts to do it. And because I think I can.
Additionally, this would also close several other items.
Closes #2024 = The CSL locales takes care of it.
Closes #2022 = The CSL styles have appropriate fallbacks (substitutes, conditionals, etc.)
Closes #2027 = The CSL styles and locales define how to format localized dates in the selected citation or bibliography style.
Closes #2026 = Some CSL styles sort entries by citation order ("citation-number"), so keeping track of cited entries was needed anyhow.