我经常使用 TeX 等排版公式。最近我注意到 ConTeXt 和普通 TeX 之间存在差异。
\starttext
\startformula
\int\nolimits_a^bf(x)dx=F(b)-F(a)
\stopformula
\stoptext
ConTeXt 生成的结果
$$\int_a^bf(x)dx=F(b)-F(a)$$
\bye
LuaTex 生成的结果
既然 ConTeXt 使用 LuaTeX 作为引擎,为什么我会得到不同的输出?在我看来,纯 TeX 生成的公式更漂亮。
LuaTeX 中加载的字体
d:\typeset>luatex formulas.tex luatex formulas.tex 这是 LuaTeX,版本 beta-0.77.0-2013041621 (rev 4633) 已启用 \write18。 (./formulas.tex(d:/context/tex/texmf-context/tex/generic/context/luatex/luatex-basics.tex)(d:/context/tex/texmf-context/tex/generic/context/luatex/luatex-fonts.tex(使用缓存:d:/context/tex/texmf-cache/luatex-cache/generic))(d:/context/texmf-context/tex/generic/context/luatex/luatex-languages.tex)(d:/context/tex/texmf-context/tex/generic/context/luatex/luatex-mplib.tex)[1{d:/context/tex/texmf/fonts/map/pdftex/plain/pdftex.map}] ){d:/context/tex/texmf/fonts/enc/dvips/lm/lm-mathsy.enc}{d:/context/tex/texmf/fonts/enc/dvips/lm/lm-rep-cmrm.enc}{d:/cont ext/tex/texmf/fonts/enc/dvips/lm/lm-mathit.enc}{d:/context/tex/texmf/fonts/enc/dvips/lm/lm-mathex.enc} 输出写在 formulas.pdf 上 (1 页,33366 字节)。 抄录写在 formulas.log 上。
使用 modern-designsize-virtual typescript
\usetypescript[modern-designsize-virtual]
\setupbodyfont[modern-designsize-virtual,rm,10pt]
\starttext
\startformula
\int\nolimits_a^bf(x)dx=F(b)-F(a)
\stopformula
\stoptext
输出(使用modern-designsize-virtual
打字稿时):
输出(在独立上下文中使用普通 luatex 时)
还是有区别的 :-(
d:\typeset>pdffonts.exe context.pdf
pdffonts.exe context.pdf
name type emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
JFRMQG+LMRoman10-Regular CID Type 0C yes yes yes 18 0
APMHZE+LMMathExtension10-Regular Type 1 yes yes no 19 0
AWBTPY+LMMathItalic7-Regular Type 1 yes yes no 20 0
ITITNI+LMMathItalic10-Regular Type 1 yes yes no 21 0
JZHWIZ+LMRoman10-Regular CID Type 0C yes yes yes 22 0
MGKPYK+LMMathSymbols10-Regular Type 1 yes yes no 23 0
d:\typeset>pdffonts.exe plain.pdf
pdffonts.exe plain.pdf
name type emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
APMHZE+LMMathExtension10-Regular Type 1 yes yes no 4 0
AWBTPY+LMMathItalic7-Regular Type 1 yes yes no 5 0
ITITNI+LMMathItalic10-Regular Type 1 yes yes no 6 0
DMNVHT+LMRoman10-Regular Type 1 yes yes no 7 0
MGKPYK+LMMathSymbols10-Regular Type 1 yes yes no 8 0
答案1
使用 ConTeXt 和纯 TeX(使用 ConTeXt 独立版中的 LuaTeX)生成的 PDF 文件使用不同的字体或至少是 Latin Modern 的不同变体。以下是 的输出pdffonts
:
pdffonts context.pdf
name type emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
OLAZTU+LMRoman12-Regular CID Type 0C yes yes yes 18 0
RXHAAY+LatinModernMath-Regular CID Type 0C yes yes yes 19 0
JTHTZJ+LatinModernMath-Regular CID Type 0C yes yes yes 20 0
pdffonts plain.pdf
name type emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
APMHZE+LMMathExtension10-Regular Type 1 yes yes no 4 0
AWBTPY+LMMathItalic7-Regular Type 1 yes yes no 5 0
ITITNI+LMMathItalic10-Regular Type 1 yes yes no 6 0
DMNVHT+LMRoman10-Regular Type 1 yes yes no 7 0
MGKPYK+LMMathSymbols10-Regular Type 1 yes yes no 8 0
这解释了略有不同的视觉外观。为了在 ConTeXt 中使用相同的字体,请使用\setupbodyfont[modern-designsize-virtual]
:
\setupbodyfont [modern-designsize-virtual]
\starttext
\startformula
\int\nolimits_a^bf(x)dx=F(b)-F(a)
\stopformula
\stoptext
答案2
如果你将示例修改为如下形式
\starttext
\tracingoutput1
\showboxbreadth\maxdimen
\showboxdepth\maxdimen
\errorstopmode
\startformula
\int\nolimits_a^bf(x)dx=F(b)-F(a)
\stopformula
\stoptext
和
\tracingoutput1
\showboxbreadth\maxdimen
\showboxdepth\maxdimen
\errorstopmode
$$\int_a^bf(x)dx=F(b)-F(a)$$
\bye
您会发现它们使用不同的字体和不同的字符。Plain (pdf)tex 当然使用计算机现代数学斜体和相关字体,例如 x 是 x:
...\tenrm (
...\teni x
...\tenrm )
上下文使用拉丁现代和 Unicode 数学字母块中的数学斜体
...................\3>modern-designsize-12pt-mm-mb--1 (
...................\3>modern-designsize-12pt-mm-mb--1