sile-typesetter / sile

The SILE Typesetter — Simon’s Improved Layout Engine
https://sile-typesetter.org
MIT License
1.65k stars 98 forks source link

[manual] Figure in section 1.3 has shoddy margins #1211

Closed meithecatte closed 3 years ago

meithecatte commented 3 years ago

In section 1.3 "SILE versus InDesign", the figure is outright touching the baseline of the text above it, and obscuring descenders of letters like g. This is hideously ugly. It feels petty to say outloud, but when I saw this, my interest in learning about SILE quickly wavered...

ctrlcctrlv commented 3 years ago

I see what you're talking about on the SILE website, yes.

image

For me the whole manual doesn't even build, I get an error, even if I install .fonts into $HOME/.fonts/SILE:

libtexpdf:fatal: texpdf_dev_locate_font() called with the zero ptsize.

That being said, I hacked the file c01-whatis.sil to build on its own if macros.sil was available, and I don't get the error:

image

Most likely this got fixed in SILE recently?

alerque commented 3 years ago

@NieDzejkob Thanks for this report. Unfortunately this isn't an image margin issue, it is the drop-cap / floating frame mechanism and it is absolutely cantankerous. I really wish we had this fixed, but so far I haven't come up with a magic incantation that works robustly. It can be fiddled with given the exact details of any given page, but nothing works reliably without hand tweaking for each case. (@ctrlcctrlv this is probably why yours looks okay, it is highly sensitive to the exact font metrics and content at any given moment). This is a duplicate of #860 (re the manual) but the underlying issue is actually #394. At this point I have a dozen branches with attempts to fix this (with names like pushing-my-limits, drop-in-sanity, die-die-drop-caps, float-sam-and-jet-sam, etc.). I've used at least 6 different iterations for different book projects and none of them are generally good enough to replace what's here.

@ctrlcctrlv Are you trying to build the manual with make docs or by calling ./sile directly yourself? Which version are you trying to build?

ctrlcctrlv commented 3 years ago

@alerque I didn't realize that I couldn't just run sile documentation/sile.sil. I get much farther if I call make docs. However, I still fail to build the manual.

[48] <packages/gutenberg><packages/indexer><packages/math>[49] [50] 
Error detected:
    ./packages/math/base-elements.lua:803: field 'get_glyph_dimensions' is not callable (a nil value)
make: *** [Makefile:1491: documentation/sile.pdf] Error 1
make: *** Deleting file 'documentation/sile.pdf'
[fred@🍇葡萄🍇SILE]$ git pull
Already up to date.
ctrlcctrlv commented 3 years ago

Oh, that build failure is probably due to mismatched /usr/bin/sile and master SILE manual. I wouldn't worry about it.

alerque commented 3 years ago

Using make docs is kind of the required way to build the manual. It sets up (downloading if necessary) the necessary fonts, silos the build with just those font versions available, uses the local working directory version of SILE not the system version, identifies the version and available packages properly, and has a few other tricks to get everything matching so the manual is consistent the state of the repository.

All that still doesn't explain why you can't build the manual. The manual being in working order is something we require of even merge to master via CI. See e.g. the current HEAD build, the manual is successfully building in there. I can also do it locally both with system Luarocks or vendored.

Can you try a make clean ; make docs? I wonder if you have a working tree with a half-compiled version of SILE, i.e. the C modules in particular sound like they were compiled before the math branch merge and you are now building math things use new features but they are not there in the C APIs for the modules you have. If you are using make docs this should ignore anything installed on your system and just use local working directory SILE resources.