Fix plate overhang inside quotations; clear the last build warnings

Four plates overhung the measure and displaced into the right margin.
On those pages the original interrupts a displayed quotation with a
plate (p0129/30/31/32, p0217/18, p0386/87), so \plateop ran inside
extract's \addmargin, where the paragraph is set by \parshape to
\linewidth — while the minipage was built at \textwidth. The quotation
indents 0.5in + 0.3in, so the overhang was exactly 0.8in, which is also
\marginparwidth; that coincidence made it look like a marginnote fault
for a long time. \plateop, \plate and \fig now build at \linewidth,
correct in any context and unchanged on the other 174 plates.

Also: \mdseries on the three \bnsignfont cells of the Scheme of
Transliteration, which inherited the table's \bfseries and asked for a
bold Tiro Bangla that does not exist.

The build log is now clean — no overfull boxes, no font warnings. The
remaining underfulls are the documented cost of ragged right with
hyphenation off.

Docs: PLAN.md's Type row carried four stale values (11pt, 5.2in measure,
leading 1.22, hyphenation on) and now records the measured leading and
its derivation; CLAUDE.md's macro table documents \chapstart's optional
short title and \toclnp; QUESTIONS.md splits the quotation slips by
whether the source can be consulted at all — five are unpublished
archive material and are a record, not a task.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-14 20:29:55 +06:00
co-authored by Claude Opus 5
parent 82849eb94d
commit 113d280103
6 changed files with 41 additions and 19 deletions
+2 -2
View File
@@ -51,7 +51,7 @@ Read those three files first, every session.
## Macro reference (`src/preamble.tex`)
| Macro | Use |
|---|---|
| `\chapstart{Title}` / `\chaphead{Title}` | Starts a chapter/section: new page, centred bold head, bookmark, note group "Notes to Title". **Must precede `\origpage` in the file.** Resets note numbering: next `\fn` is `\fn{1}`. |
| `\chapstart[Short]{Title}` / `\chaphead[Short]{Title}` | Starts a chapter/section: new page, centred bold head, bookmark, note group "Notes to Title". **Must precede `\origpage` in the file.** Resets note numbering: next `\fn` is `\fn{1}`. The optional `[Short]` is the form used for the PDF outline, the running head and the note group, for a head the original sets on two lines — the Abstract repeats the thesis title above its own, and without it the bookmark reads as one glued string. |
| `\origpage{N}` | Original page N starts here (mid-sentence is normal). Exactly one per text page file, at the point of the break. |
| `\fn{n}{text}` | Footnote n of the original → endnote. n must be the original's number; `make check` enforces 1,2,3… per chapter. |
| `\plateop{N}{no}{plates/pNNNN.png}{caption}` | A plate that begins original page N (the usual case: one plate per page). |
@@ -63,7 +63,7 @@ Read those three files first, every session.
| `\pg{N}` | Hyperlink to original page N (used in Contents/List of Plates). |
| `\begin{biblist}…\end{biblist}`, `\bibgroup{…}`, `\bibhead{…}` | The Bibliography (orig. pp.419–429): the original sets it solid — a bold group heading (`\bibgroup`), then one entry per paragraph with the continuation lines indented. `biblist` gives that block (no paragraph skip, 1.6em hanging indent); `\bibhead` is a centred bold heading inside it. |
| `\fig{img}` | An **unnumbered** illustration the original sets in the run of the text (no plate number, no caption — the preceding sentence carries the reference). Centred, native size, shrunk only if wider than the measure. Crop it by explicit pixel box with PIL to `plates/fig-pNNNN.png` and record the box in the manifest `notes` column. |
| `\pl{no}{caption}{page}`, `\tocl{indent}{label}{title}{page}` | List-of-Plates / Contents lines. |
| `\pl{no}{caption}{page}`, `\tocl{indent}{label}{title}{page}`, `\toclnp{indent}{label}{title}` | List-of-Plates / Contents lines. `\tocl` carries a page number and links the whole line to `page.N`; `\toclnp` is the no-page form for a front-matter entry whose number is set separately with `\pg`. |
| `\unsure{text}` | Doubtful reading (logged to `unsure.log`). |
| `\qslip{as printed}` | A suspected slip **inside quoted matter**. Never corrected — the slip may be the quoted source's, not Ross's. Sets the text unchanged, logs to `qslips.log`; list it in `QUESTIONS.md` with the source so it can be checked. |
| `\erratum{corrected}{as printed}` | A slip in the **original** that this edition corrects: sets the corrected reading, logs to `errata.log`. Arguments must be plain text (put `\emph` outside). Every use needs a matching `\erratumline{orig page}{as printed}{corrected}` in `src/errata.tex` — `make check` enforces it — and the pair prints in the Errata section. Handwritten corrections in the scan are *not* errata: adopt them silently and log in `QUESTIONS.md`. |
+1 -1
View File
@@ -9,7 +9,7 @@ Character from 1778 to 1978*, Ph.D., SOAS, 1988. ProQuest scan, 431 PDF pages,
|---|---|
| Layout | **Reflowed** text. `\origpage{N}` marks where original page N begins: bold sans number in the outer margin + thin bar in the line + `page.N` hyper-target. Running head shows the original page range on each edition page; edition page number in the footer |
| Notes | Footnotes become **endnotes** (enotez) in a final *Notes* section, grouped "Notes to <Chapter>", keeping original numbers via `\fn{n}{text}`; marks link to notes, notes link back |
| Type | 11pt **TeX Gyre ScholaX** (Century Schoolbook) on a 5.2in measure (≈70 characters a line); Liberation Sans for marks and heads; leading 1.22; **ragged right** (ragged2e `\RaggedRight`, hyphenation on); hanging punctuation (microtype protrusion, dashes hang far less); widows and orphans forbidden with `\raggedbottom`. **Tiro Bangla** for Bengali that shows the modern script (the Scheme of Transliteration). Bengali that shows a **historical** typeface is never typed: it is cut from the scan by `tools/crop_inline.py` and set with `\ig` at native size |
| Type | 12pt **TeX Gyre ScholaX** (Century Schoolbook) on a 5.95in measure; Liberation Sans for marks and heads. **Leading 1.59 — a 22.9pt line, which is the original's own, measured off the scan at 300 dpi by autocorrelating the row-ink profile; the inline specimens set it, not the text.** Inline specimens at **native size** (`\igscale` = 72.27/300), the 74% of the line the original gives them. First line indented 1.6em, `\parskip` 0.15em (ragged2e resets `\parindent` from `\RaggedRightParindent`, so both are set). **Ragged right and unhyphenated** (`\RaggedRight`, `\hyphenpenalty=10000`, `\lefthyphenmin=62`) — the typescript breaks only at spaces and at hyphens it actually typed. Hanging punctuation (microtype protrusion, dashes hang far less); widows and orphans forbidden with `\raggedbottom`. **Tiro Bangla** for Bengali that shows the modern script (the Scheme of Transliteration). Bengali that shows a **historical** typeface is never typed: it is cut from the scan by `tools/crop_inline.py` and set with `\ig` |
| Structure | `\chapstart{Title}` = new page + centred bold head + PDF bookmark + notes group. One `.tex` per original page in `src/pages/pNNNN.tex` (NNNN = PDF page); `\chapstart` must come *before* `\origpage` in a file |
| Plates | Cropped from the 300 dpi scan by `tools/crop_plate.py` (scanner bars, page number, caption stripped; gutter shadow swept; deskewed when the page is out of square — the one step that resamples), embedded lossless at native resolution. `\plateop{N}{no}{img}{caption}` for a plate that begins page N; `\plate{no}{img}{caption}` otherwise. Per-page crop recipe recorded in the manifest `notes` column |
| Colophon | `src/colophon.tex` = leaf 2: description of the conversion + ProQuest notice text. Blank stamped leaf (PDF p.3) dropped and noted there |
+13 -1
View File
@@ -11,6 +11,14 @@ Nothing outstanding. The quotation-slip table below is for checking against the
sources when convenient — it does not block anything.
## Suspected slips inside quotations — left exactly as printed, for checking against the source
Never corrected: the slip may belong to the quoted source rather than to Ross. Checking one means reading
the cited page, so the table records how far the source can be got at. **Five of them cannot be checked by
anybody outside the archives that hold them** — they are unpublished letters and trade documents, and for
those the entry here is the permanent record, not a task. (Attempted remotely 2026-09-14 and abandoned: the
full text of the early printed sources could not be reached reliably, and an unverified guess is worse than
an open row.)
### Published sources — checkable in a library
| Orig. page | As printed | Quoted source |
|---|---|---|
| 116 | *idolotrous* | Carey, *An Enquiry* (1792), p. 2 |
@@ -22,10 +30,14 @@ sources when convenient — it does not block anything.
| 208 | *tounge* | Gilbert & Rivington, *Lord's Prayer in Three Hundred Languages* (1891), Preface |
| 244 | *aquainted* | Rāma Kamala Sena, *A Dictionary in English and Bengalee* (Serampore, 1834), I, Preface |
| 246 | *professsional* | Pandey, *Indian Palaeography* (Benares, 1952), p. 93 |
| 308 | *Newpaper* | Vijayapaliah, *Introduction of Kannada on the … Linotype* (Bangalore, 1954), p. 3 |
### Unpublished — in the archives Ross consulted, and nowhere else
| Orig. page | As printed | Quoted source |
|---|---|---|
| 276 | *Pharamaceutical* | Majumdar to May, 14 Sept 1933, Mergenthaler Correspondence file no. 918 |
| 297 | *imposssible* | MC 918: King to Griffith, 4 Nov 1937 |
| 305 | *seperate* | LC 17A: Tracy to Martin, 3 Sept 1964 |
| 308 | *Newpaper* | Vijayapaliah, *Introduction of Kannada on the … Linotype* (Bangalore, 1954), p. 3 |
| 335 | *here* (for *there*) | Letter from David Saunders, 16 Dec 1986 |
| 353 | *compatability* | Stempel, *Information; Photocomp Type Faces* (January, 1980), Design Sizes |
+11 -6
View File
@@ -58,13 +58,18 @@
\pgmarknote{#1}{\color{black!45}\rule[-0.3ex]{0.5pt}{1.8ex}}\hspace{0.15em}\fi\ignorespaces}
% \plateop{N}{no}{img}{caption}: a plate that begins original page N — the
% page mark stays with the plate wherever it is placed.
% Built at \linewidth, never \textwidth: on four pages the original interrupts a
% displayed quotation with a plate (p0129/30/31/32, p0217/18, p0386/87), and inside
% extract's \addmargin the paragraph is set by \parshape to \linewidth. A minipage
% at \textwidth overhung the measure there by the quotation's 0.8in indent — which
% is also \marginparwidth, a coincidence that made it look like a margin-note fault.
% NB \marginnote cannot place a note inside a minipage — it falls back to
% setting it inline, which overflows the measure when the plate fills the full
% width. So the page mark goes outside the minipage.
\newcommand{\plateop}[4]{\par\medskip\noindent\InsertMark{origpg}{#1}%
\hypertarget{page.#1}{}\pgmarknote{#1}%
\begin{minipage}{\textwidth}\centering
\includegraphics[width=\textwidth,height=0.74\textheight,keepaspectratio]{#3}\par\smallskip
\begin{minipage}{\linewidth}\centering
\includegraphics[width=\linewidth,height=0.74\textheight,keepaspectratio]{#3}\par\smallskip
{\footnotesize\setstretch{1.05}\raggedright #2. #4\par}\end{minipage}\par\medskip}
% \notesection: the endnotes set a step smaller and tighter than the text —
% there are hundreds of them and they are consulted, not read through.
@@ -222,11 +227,11 @@
% cut is wider than the measure, in which case it shrinks to fit.
\newsavebox{\figbox}
\newcommand{\fig}[1]{\par\medskip\sbox{\figbox}{\includegraphics[scale=\igscale]{#1}}%
\begin{center}\ifdim\wd\figbox>\textwidth
\resizebox{\textwidth}{!}{\usebox{\figbox}}\else\usebox{\figbox}\fi
\begin{center}\ifdim\wd\figbox>\linewidth
\resizebox{\linewidth}{!}{\usebox{\figbox}}\else\usebox{\figbox}\fi
\end{center}\par\medskip}
\newcommand{\plate}[3]{\par\medskip\noindent\begin{minipage}{\textwidth}\centering
\includegraphics[width=\textwidth,height=0.74\textheight,keepaspectratio]{#2}\par\smallskip
\newcommand{\plate}[3]{\par\medskip\noindent\begin{minipage}{\linewidth}\centering
\includegraphics[width=\linewidth,height=0.74\textheight,keepaspectratio]{#2}\par\smallskip
{\footnotesize\setstretch{1.05}\raggedright #1. #3\par}\end{minipage}\par\medskip}
% \ig{img}: an inline type specimen cut from the 300 dpi scan by
% tools/crop_inline.py, set at its natural size (1 px = 1/300 in) so that
+3 -3
View File
@@ -25,9 +25,9 @@ ca & \B{চ} & śa & \B{শ} \\
cha & \B{ছ} & ṣa & \B{ষ} \\
ja & \B{জ} & sa & \B{স} \\
jha & \B{ঝ} & ha & \B{হ} \\
ña & \B{ঞ} & ṃ & {\large\bnsignfont\XeTeXglyph 824} \\
ṭa & \B{ট} & \textasciitilde & {\large\bnsignfont\XeTeXglyph 822} \\
ṭha & \B{ঠ} & ḥ & {\large\bnsignfont\XeTeXglyph 827} \\
ña & \B{ঞ} & ṃ & {\mdseries\large\bnsignfont\XeTeXglyph 824} \\
ṭa & \B{ট} & \textasciitilde & {\mdseries\large\bnsignfont\XeTeXglyph 822} \\
ṭha & \B{ঠ} & ḥ & {\mdseries\large\bnsignfont\XeTeXglyph 827} \\
ḍa & \B{ড ড়} & & \\
\end{tabular}
\end{center}
+11 -6
View File
@@ -58,13 +58,18 @@
\pgmarknote{#1}{\color{black!45}\rule[-0.3ex]{0.5pt}{1.8ex}}\hspace{0.15em}\fi\ignorespaces}
% \plateop{N}{no}{img}{caption}: a plate that begins original page N — the
% page mark stays with the plate wherever it is placed.
% Built at \linewidth, never \textwidth: on four pages the original interrupts a
% displayed quotation with a plate (p0129/30/31/32, p0217/18, p0386/87), and inside
% extract's \addmargin the paragraph is set by \parshape to \linewidth. A minipage
% at \textwidth overhung the measure there by the quotation's 0.8in indent — which
% is also \marginparwidth, a coincidence that made it look like a margin-note fault.
% NB \marginnote cannot place a note inside a minipage — it falls back to
% setting it inline, which overflows the measure when the plate fills the full
% width. So the page mark goes outside the minipage.
\newcommand{\plateop}[4]{\par\medskip\noindent\InsertMark{origpg}{#1}%
\hypertarget{page.#1}{}\pgmarknote{#1}%
\begin{minipage}{\textwidth}\centering
\includegraphics[width=\textwidth,height=0.74\textheight,keepaspectratio]{#3}\par\smallskip
\begin{minipage}{\linewidth}\centering
\includegraphics[width=\linewidth,height=0.74\textheight,keepaspectratio]{#3}\par\smallskip
{\footnotesize\setstretch{1.05}\raggedright #2. #4\par}\end{minipage}\par\medskip}
% \notesection: the endnotes set a step smaller and tighter than the text —
% there are hundreds of them and they are consulted, not read through.
@@ -222,11 +227,11 @@
% cut is wider than the measure, in which case it shrinks to fit.
\newsavebox{\figbox}
\newcommand{\fig}[1]{\par\medskip\sbox{\figbox}{\includegraphics[scale=\igscale]{#1}}%
\begin{center}\ifdim\wd\figbox>\textwidth
\resizebox{\textwidth}{!}{\usebox{\figbox}}\else\usebox{\figbox}\fi
\begin{center}\ifdim\wd\figbox>\linewidth
\resizebox{\linewidth}{!}{\usebox{\figbox}}\else\usebox{\figbox}\fi
\end{center}\par\medskip}
\newcommand{\plate}[3]{\par\medskip\noindent\begin{minipage}{\textwidth}\centering
\includegraphics[width=\textwidth,height=0.74\textheight,keepaspectratio]{#2}\par\smallskip
\newcommand{\plate}[3]{\par\medskip\noindent\begin{minipage}{\linewidth}\centering
\includegraphics[width=\linewidth,height=0.74\textheight,keepaspectratio]{#2}\par\smallskip
{\footnotesize\setstretch{1.05}\raggedright #1. #3\par}\end{minipage}\par\medskip}
% \ig{img}: an inline type specimen cut from the 300 dpi scan by
% tools/crop_inline.py, set at its natural size (1 px = 1/300 in) so that