Replies: 2 comments
-
I don't have much useful feedback, but I have the perspective of a new user coming from a LuaTeX and (earlier) MS Word background. I have never seen the It should be obvious that every author and every book/journal have their own vision of how to do things. So, it is not generally expected of a typesetting system to provide readily-usable document classes. I never had an intention of typesetting something I need as quickly as possible, but if I were to, I would first go to the publishers' to check if they have the Long story short, I disagree with the point that SILE needs additional classes out of the box, as those should be either authored or willfully obtained. At the same time, it would probably very wise for a typesetting system to help and promote macro packages, such as re-SIL-ient, that draw in recognition and quality for the whole system. Don't we hear LaTeX more often than TeX? And LaTeX is not the typesetting system. .... that reminds me: I found the |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
SILE's "book" document class, mentioned in The SILE Book, is probably what most newcomers will try first when typesetting a book with SILE.
It's likely their first encounter with SILE, and they'll probably assume its capabilities are representative of the system.
But in reality, it is very limited in features and usability...
TL;DR: You may want to just jump to the conclusion at the end.
Designing a generic-purpose book class is not trivial.
It took me quite an effort to achieve a somewhat satisfactory level in my own re·sil·ient book class, and I wouldn't say it's totally done yet.
To better assess the challenges, you'll find below a 2025 assessment of the core book class, compared to the re·sil·ient book class, with comments on some of the problems.
Book structure assessment
From a high-level perspective, let's first consider features related to the overall structure of a book.
Notes:
Issue "Book class needs some default way to handle titles" (#599) (2019)
Issue "Title / halftitle pages for book class": #1111 (2020)
Issue "Book class could use a
\part
command": #601 (2019)The issue also briefly mentions other sectioning levels ("subsubsection") and book divisions in the discussions.
See also Draft PR #597 (2019).
Sectioning levels assessment
Let's look deeper into sectionining levels.
Notes:
Without consecutive skip collapsing and page break penalty adjustments.
This has (bad) implications for successive sectioning levels, for instance a section immediately following a subsection, without any intervening text.
In the worst scenario, it can lead to excessive vertical space between the two levels, and even a page break between them...
For reference, see "Note on consecutive skips" in the re·sil·ient user guide.
The styling paradigm in re·sil·ient implements skip collapsing, but still has some rough edges on penalty adjustments.
That the topic was never discussed is somewhat surprising, given how common it is in book design, and how well it has been handled in "competitors".
In its true form, it requires a more sophisticated approach that what re·sil·ient does...
Issue "Book class has running headers on wrong page": #1842 (2023)
Issue "Section titles in running header are conditioned by folios": #1291 (2021)
Issue "Footnotes in section headers": #1287 (2021)
This is a much more general problem with "fragile" commands (footnotes, cross-reference labels, etc.) in any content (which section titles are a special case of) that may end up in running headers, ToC entries, PDF bookmarks, etc. --- as noted in issue #1369 in 2025.
In re·sil·ient, the question was only addressed in 2025, "Prevent fragile commands from leaking" (#138), with transitional implementation, out of desperation.
The fact that the question was never discussed, with a documented core solution (e.g., at command registration), probably hints at a lack of understanding and knowledge in SILE's user community. The TeX-systems have been dealing with
\protect
-like mechanisms for decades.Table of contents assessment
However implemented, the table of contents is a key element of book structure...
Notes:
Page layout assessment
Above we looked at what goes into a book, but the page layout is also important.
Page layout here refers to the overall layout of the page: margins, positioning of headers and footers, sizing and placement of the text block, etc.
In SILE, these are the "frames" making a "frame set", and at higher level, "page masters."
Of course, low-level control of frames and page masters is possible, and the SILE user manual has a section on that.
The core mechanism is powerful, but not very user-friendly.
As feedbacks (in discussions etc.) show, it's hard to get right for a non-expert user.
Some modules (for footnotes, folios, etc.) may have assumptions about the page layout, which may complicate things further.
Notes:
The weird decimal values correspond to inner margin ~1/12th of the page width, bottom margin ~1/6th of the page height.
It would hint towards a ratio-based Van de Graaf layout ("division 12 2" in re·sil·ient terminology)...
But with outer margin ~1/7th of the page width, and top margin = ~1/8.6th of the page height, it is not really that.
It's a questionable choice for a default layout, and not very instructive on how these are usually designed, with elegant proportions in mind.
Additional remarks:
The SILE user manual devotes a section to explaining how to set up custom page layouts at low level.
However, the provided example (derived from the LaTeX
memoir
package documentation) refers to "Bringhurst's book" in vague terms.The values corresponds to the very first layout in table 3.1 from the said
memoir
documentation (with illustration in table 3.2), attributed to Bringhurst in the accompanying text...But there's a problem here.
Robert Bringhurst designed a rather elegant layout for his book, based on geometric properties and pentagonal-based constructions (encompassing more things, actually, than just the disposition of the frames on the page). It is illustrated in the frontispiece of the 3rd edition, just before the table of contents.
I do not know where the author of the notes for the
memoir
package got his values from.They refer to the 1992 edition of Bringhurst's book, which I do not have access to, and mention an original size of 132 × 227 mm (ratio 1:1.72). In their bibliography, they list only the 2nd edition, but with the wrong year (1999 instead of 1996).
Checking the 3rd edition (2004), the layout does not match, especially the inner and outer margins, which differ significantly.
This edition uses a page size of approx. 134 × 232 mm (ratio 1:1.73, closer to 1:√3 see below).
It's a bit embarrassing that The SILE Book refers to a layout from a secondary source, which might not be accurate, or at best incomplete.
More importantly, this layout is specifically designed for pages in a 1:√3 ratio. It is misleading (at least) that the applicability of a given layout to a specific page ratio is not mentioned in the user manual. It's even more true for Bringhurst's layout, which only works for that specific page ratio, or it looses its geometric qualities.
Users probably use other more common page sizes, in 1:√2 (ISO), 2:3 (US trade), or other ratios.
If SILE wants to help them design great books, it should make them aware of these aspects of book design.
For examples, see part III of the re·sil·ient user guide for more details on page layouts.
Overall assessment
The book class is used in several test cases, as the bare "plain" class is not enough for them.
It makes it quite hard to change its behavior, without breaking the tests in the process.
Overall, the core book class suffers from several issues.
It is more meant as a "teaching example" or a "toy" than a production-ready class.
To that respect, it is not bad for what it is, and looking at its internal code can be instructive. It did learn a few techniques there, that I later reused.
But assuming users will design their own book class for production use is not realistic.
Most users will expect a usable default book class, and will not have the time or expertise to one themselves.
The same remarks would apply to other document classes, e.g., for articles.
To that regard, see open issue "Implement an article class", #455 (2017)...
It never happened, and probably never will.
Rational users will expect such standard classes to be provided out of the box --- and easily tunable to their needs --- or they will simply switch to another typesetting system. It needs dedication and passion to go against that grain.
I am not a rational user, probably. But in my 4-year experience with SILE so far, I haven't seen many users working on their own classes to any extent that would make them general-purpose and re-usable by others, on a scope comparable to what I have tried to achieve with re·sil·ient (documented in a carefully written user guide, and demonstrated in several books).
Conclusion
Its name is misleading, the core book document class is a "minimal toy book" example class, not suitable for real-world book typesetting.
It could be significantly improved, but that would require a lot of work and design effort, duplicating much of what I have struggled with in re·sil·ient.
IMHO, minimally:
That would be a first step, allowing to keep it as both a teaching example and a test tool.
What would be the next step?
So maybe SILE, at least "semi-officially", should consider endorsing the re·sil·ient book class in some way... 😁
But it in any case, letting users think that the core "book" class is "something real" is very likely to cause frustration and disappointment...
Comments, feedbacks and advice are welcome on this topic (which might, or not, become part of a longer essay) 😀
Beta Was this translation helpful? Give feedback.
All reactions