After having read the answers to What are the various units (ex, em, in, pt, bp, dd, pc) expressed in mm? and some related questions, I’ve realized that one of my basic assumptions about Tex was wrong: I thought that since the scaled point sp is the fundamental internal base unit (at about 5.36 nm), all other (absolute) units would be expressed in an integer amount thereof. This would have been the values in the top-level bullet points below, the bold values are reported by source code like 1pt = \number\dimexpr 1pt\relax sp:
1pt=65536sp(exact definition, 2^16)1pc=12pt=786432sp1bp= 65781.76sp ⇒65781spto65782sp(with 72.27/72 = 803/800 pt/bp)- from int
in: same int values 100bp = \number\dimexpr 100bp\relax sp⇒ 6578176sp (not 6578100sp!)
- from int
1in= 72.27pt = 4736286.72sp ⇒4736286spto4736287sp- from int
bp:72bp=4736232spto4736304sp 100in = \number\dimexpr 100in\relax sp⇒ 473628672sp (not 473628600sp!)
- from int
Okay, so points and inches are accurately implemented, but what about millimetres and centimetres?
1mm= 186467.9811… sp ⇒186467spto186468sp- from int
inbypt: same int values - from int
inbybp:186465spto186466spor186468spto186469sp 1000mm = \number\dimexpr 1000mm\relax sp⇒ 186467981sp2540mm = \number\dimexpr 2540mm\relax sp⇒ 473628672sp (=100in)
- from int
1cm= 1864679.811… sp ⇒1864679spto1864680sp- from int
inbypt: same int values - from int
inbybp:186465spto186466spor186468spto - from int
mm:10mm=1864650sp,1864660sp,1864670sp,1864680spor1864690sp 100cm = \number\dimexpr 100cm\relax sp⇒ 186467981sp254cm = \number\dimexpr 254cm\relax sp⇒ 473628672sp (=100in)
- from int
It seems reasonable to expect that the actual internal definition is in fact 1in = 1cm = 10mm, but since values get truncated when converted to sp, there’ll of course be rounding errors as shown in the answers linked to above.
But what’s the actual definition of the Didot point (and Cicero) in Tex and which historic definition does it try to approximate? I’ve seen 1238/1157 pt/dd or 1.07 pt/dd been stated several times, but no actual authoritative reference.
1dd=sporsp(70124sp)- ⅜ mm/dd:
0.375mm= - Tschichold 100/266 mm/dd:
0.37594mm= - Didot approx.:
0.37597mm= - Berthold:
0.376mm= - 16/15 pt/dd:
69905sp 1.07pt=
- ⅜ mm/dd:
1cc=12dd= `` orsp(841489sp, not841488sp!)4.5mm=- Tschichold 1200/266 mm/cc: ca.
4.5112782mm - Berthold:
4.512mm= - 192/15 pt/pc:
12.8pt= 12.84pt=
\noindent1pt = \number\dimexpr 1pt\relax sp
\noindent1pc = \number\dimexpr 1pc\relax sp
\noindent1bp = \number\dimexpr 1bp\relax sp
\noindent1in = \number\dimexpr 1in\relax sp
800bp = 803pt = \number\dimexpr 800bp\relax sp = \number\dimexpr 803pt\relax sp %= 52625408sp
\noindent1mm = \number\dimexpr 1mm\relax sp
\noindent1cm = \number\dimexpr 1cm\relax sp
2540mm = 254cm = 100in = 7200bp = 7227pt \hfill\break %= 473628672sp
= \number\dimexpr 2540mm\relax sp = \number\dimexpr 254cm\relax sp = \number\dimexpr 100in\relax sp = \number\dimexpr 7200bp\relax sp = \number\dimexpr 7227pt\relax sp
\noindent1dd = \number\dimexpr 1dd\relax sp %= 70124sp
1.07pt = \number\dimexpr 1.07pt\relax sp %= 70124sp
Berthold: \number\dimexpr 0.376mm\relax sp %= 70113sp
Didot approx.: \number\dimexpr 0.37597mm\relax sp %= 70107sp
Tschichold: \number\dimexpr 0.37593985mm\relax sp (100/266 mm/dd) %= 70101sp
3/8 mm/dd: \number\dimexpr 0.375mm\relax sp %= 69925sp
16/15 pt/dd: 69905sp
1238pt = 1157dd = \number\dimexpr 1238pt\relax sp = \number\dimexpr 1157dd\relax sp %= 81133568sp
\noindent1cc = 12dd = \number\dimexpr 1cc\relax sp = \number\dimexpr 12dd\relax sp %= 841489sp != 841488sp
12.84pt = \number\dimexpr 12.84pt\relax sp %= 841482sp != 841488sp
Berthold: \number\dimexpr 4.512mm\relax sp %= 841342sp != 841356sp
Tschichold: \number\dimexpr 4.5112782mm\relax sp (1200/266 mm/cc) %= 841208sp != 841212sp
4.5mm = \number\dimexpr 4.5mm\relax sp %= 839105sp != 839100sp
192/15 pt/pc: \number\dimexpr 12.8pt\relax sp %= 838861sp != 838860sp
1238pc = 1157cc = \number\dimexpr 1238pc\relax sp = \number\dimexpr 1157cc\relax sp %= 973602816sp
\vskip1em
10000pt = \number\dimexpr 10000pt\relax sp %= 655360000sp
10000bp = \number\dimexpr 10000bp\relax sp %= 657817600sp
10000dd = \number\dimexpr 10000dd\relax sp %= 701240864sp
\bye
texdoc tex), these comments (and code) are in §587 and §458. – ShreevatsaR Jan 18 '17 at 21:00