Check out my first novel, midnight's simulacra!

Latex joy of man's desiring

From dankwiki
Revision as of 21:07, 24 September 2023 by Dank (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

dankblog! 2023-09-24, 1628 EDT, at the danktower

i've been deep in the LaTeX shit of it all for the past three months while working on my novel. i think LaTeX was the right tool, and love the quality of the output and the workflow. with that said, some real annoyances have emerged.

  • for the highest quality output, the microtype package must be used. i'd never used this before, and now i'm all pissed off that twenty years of documents looked shittier than they ought have. in my experience, microtype eliminates all but the most flamboyant overfull hboxen and underfull vboxen. normally one either has to turn off these warnings and accept line overruns, or fix them by hand as they come up. eliminating all overfull hboxen on a large document that hasn't paid attention to the warnings is a hellish task. microtype improves on lots of other things, too. the problem is: microtype only explicitly supports pdflatex. its support of my preferred XeTeX is particularly bad; support of LuaTeX seems pretty decent. this means i might switch from XeTeX to LuaTeX, which sucks, as the latter is hella slower. switching to LuaTeX eliminated all but two of my remaining overfulls (out of twenty or so).
    • on further inspection, i think LuaTeX is just suppressing some warnings. the output seems to be the same as that of XeTeX. argh!
  • CircuiTikZ and TikZ in general are pretty atrocious. it seems easy to come up with an objectively superior DSL. of course, i haven't explored the space as completely as the authors, i don't know the details of implementing such systems as TeX macros, and i'm certainly not planning to start, so what do i know? still, it feels like you ought need far fewer absolute coordinates and fine-tuning.
  • the whole "run it until it stops bitching" iterative workflow is the weakest bullshit in any field of which i am aware. yeah yeah yeah there's mklatex and rubber and arara. they're not much of an improvement. and is it just me or does the AUR lack arara? i'm just explicitly running the compiler twice in my Makefile now like an asshole.
  • speaking of arch, not a TeX thing, but why is it "Noto Sans Symbols2" on debian, and "Noto Sans Symbols 2" on arch? lame.
  • the font situation is vastly improved these days compared to when i started using LaTeX, as is Unicode and polyglottal support (polyglossia is good stuff. there's no need btw for using things like the arabxetex package, at least so far as i can tell--just properly set up polyglossia. i've got over thirty languages and over ten scripts in my ~400 page book, and it handles them all well. btw, noto is ugly as shit. don't use it except for things where you need the weird script coverage, but use it for all of them, so they hang together. i'm using Gentium Book Plus for my bulk, Noto Serif where i must, Noto Sans where Noto Serif fears to tread, and Adobe Source Code Pro for my monospace.
  • the whole math font situation is insane, and i don't really understand it. if you're going to have a lot of inline math, and don't want it to blow your line heights out, try scaling it. for instance, i've got:
\usepackage[ligatures=TeX,scale=.8]{sourcecodepro}
\setmathfont{Asana Math}[Scale=.8]                                                                                  
\setmathrm{Asana Math}[Scale=.8]

my complete highly-polyglottal configuration, that looks pretty fucking good if i do say so myself, is:

\documentclass[ebook,9pt]{memoir}
\usepackage{microtype}
\usepackage{unicode-math}
\usepackage{polyglossia}
\usepackage{fontspec}
\setsansfont{Kanit}
\usepackage[ligatures=TeX,scale=.8]{sourcecodepro}
\setmainfont{Gentium Book Plus}
\setmathfont{Asana Math}[Scale=.8]
\setmathrm{Asana Math}[Scale=.8]
\newfontfamily\chinesefont[Script=CJK]{Noto Serif CJK SC}
\newfontfamily\japanesefont[Script=CJK]{Noto Serif CJK JP}
\newfontfamily\hebrewfont[Script=Hebrew]{Noto Serif Hebrew}
\newfontfamily\devanagarifont[Script=Devanagari]{Noto Serif Devanagari}
\newfontfamily\berberfont{Noto Sans Tifinagh}
\newfontfamily\arabicfont[Script=Arabic]{Noto Naskh Arabic}
\newfontfamily\divehifont{Noto Sans Thaana}
\newfontfamily\tamilfont[Script=Tamil]{Noto Serif Tamil}
\newfontfamily\sinhalafont[Script=Sinhala]{Noto Sans Sinhala}
\newfontfamily\gujaratifont[Script=Gujarati]{Noto Serif Gujarati}
\newfontfamily\hindifont{Noto Serif Devanagari}
\setdefaultlanguage{english}
\setotherlanguages{arabic,hindi,russian,chinese,divehi,sinhala,tamil,gujarati,japanese,greek,hebrew,french,sanskrit}

previously: "fstab is a nightmare from which i am trying to awake" 2023-06-07