以下 MWEpdflatex
在 TeX Live 2014 中处理时,会在 Computer Concrete 中输出一个带有“w”的方程式。(我假设这是一种轮廓字体,因为它可以通过 PDF 查看器缩放而不会出现锯齿状。)希腊字母是欧拉字母。
\documentclass{beamer}
\usepackage[T1]{fontenc}
\usepackage{ccfonts}
\usepackage{eulervm}
\usefonttheme{serif}
\begin{document}
\begin{frame}
Note the following:
\[
\mathfrak F, w \Vdash \phi \iff \mathfrak F \models \alpha(w).
\]
\end{frame}
\end{document}
这让我很惊讶,因为我一直以为我们没有免费提供的数学模式矢量化 Concrete。如果没有这个包eulervm
,这将导致位图字体出现锯齿状,正如预期的那样。
我的问题是,我是否可以在数学模式下在 Concrete 中输出其他类型的平滑字母(希腊字母、数学符号等),如果可以,如何输出。
编辑:下面的屏幕截图显示了我假设的“w”在 Concrete 中。另外,让我补充一下,我使用的 TeX Live 2014 来自 Fedora 21 的存储库。
答案1
简短的回答是:不,你不能。Concrete 中没有 type1 格式的希腊字母或专业数学符号。这个答案的其余部分是一个(希望)解释性的叙述。
我没有意识到,但显然cm-超级不仅包括 Computer Modern 的转换,还包括一些其他字体(包括 Concrete)的转换。
当您加载时ccfonts.sty
,会发生以下情况:
\DeclareSymbolFont {operators} {OT1}{ccr} {m}{n}
\DeclareSymbolFont {letters} {OML}{ccm} {m}{it}
\DeclareSymbolFont {symbols} {OMS}{ccsy}{m}{n}
\DeclareSymbolFont {largesymbols}{OMX}{ccex}{m}{n}
\DeclareMathAlphabet{\mathbf} {OT1}{ccr}{bx}{n}
\DeclareMathAlphabet{\mathit} {OT1}{ccr} {m}{it}
当你加载时eulervm.sty
,会发生以下情况:
\edef\operator@encoding{\encodingdefault}
这定义了一种编码,然后用于声明各种字体,包括数学字母等。这些定义覆盖了 中的定义ccfonts.sty
。例如,eulervm.sty
包括以下内容:
\DeclareMathAlphabet{\mathit} {\operator@encoding}{\rmdefault}{m}{it}
默认情况下,编码将为 OT1。但是,如果你已经写过
\usepackage[T1]{fontenc}
那么默认编码是 T1。这意味着cm-超级type1 替换用于替代 Concrete 元字体,因为后者在 T1 编码中不可用。这与cm-超级当使用 T1 时,type1 Computer Modern 会替换 OT1 文本元字体。
所有这些的结果是,你最终会得到来自cm-超级替换最初由 加载的内容ccfonts.sty
,在可能的情况下以及除非eulervm.sty
更明确地覆盖定义。
那么还有什么可能cm-超级提供?
Concrete
以下是字体提供的匹配项的完整列表cm-超级:
sfocc10
sform10
sform5
sform6
sform7
sform8
sform9
sfosl10
sfosl5
sfosl6
sfosl7
sfosl8
sfosl9
sfoti10
[输出自zgrep -l Concrete fonts/afm/public/cm-super/* | sed 's/^.*\///' | sed 's/\..*$//'
。]
当然,这些大多是尺寸变化。因此,可用的不同形状、系列等是这些
sfocc10.afm.gz:FullName Computer Modern Concrete Caps and Small Caps
sform10.afm.gz:FullName Computer Modern Concrete Roman
sfosl10.afm.gz:FullName Computer Modern Concrete Slanted
sfoti10.afm.gz:FullName Computer Modern Concrete Italic
[输出自zgrep Concrete fonts/afm/public/cm-super/{sfocc10,sform10,sfosl10,sfoti10}.afm.gz | sed 's/^.*\///' | grep Full
。]
可以看出,这不包含任何数学字体本身。有些文本字体可用于operators
数学模式等用途\mathit
。但没有数学符号字体,因此没有可用的希腊字母或专业符号。
答案2
您在数学模式下从文本字体中获取了一些直立字母,因为您加载serif
字体主题时没有使用professionalfonts
。这会尝试用罗马字体替换数学模式下的拉丁字母。
如果您想要坚持使用 Type 1 字体,您可以使用mathastext
加载 Concrete 来显示数字和拉丁字母,并使用 GFS Neohellenic(也是直立粗衬线字体)来显示希腊字体。如果您确实想要 Type 1 Concrete 文本和 Euler 数学字体,您可以\usefonttheme{serif}
正常\usefonttheme{professionalfonts}
加载字体包。
执行您请求的操作的方法是加载包含希腊字母的 OpenType 字体 CMU Concrete。您可以使用 、 或 执行unicode-math
此mathastext
操作mathspec
。
\documentclass{beamer}
\usepackage[math-style=upright]{unicode-math}
\usefonttheme{serif}
\usefonttheme{professionalfonts}
\defaultfontfeatures{Scale=MatchLowercase}
\setmainfont{CMU Concrete}[Scale=1.0]
\setmathfont{Libertinus Math}
\setmathfont[range={"0000-"0001,"0020-"007E,
"00A0,"00A7-"00A8,"00AC,"00AF,"00B1,"00B4-"00B5,"00B7,
"00D7,"00F7,
"0131,
"0237,"02C6-"02C7,"02D8-"02DA,"02DC,
"0300-"030C,"030F,"0311,"0323-"0325,"032E-"0332,"0338,
"0391-"0393,"0395-"03A1,"03A3-"03A8,"03B1-"03BB,
"03BD-"03C1,"03C3-"03C9,"03D1,"03D5-"03D6,"03F5,
"2016,"2018-"2019,"2021,"2026-"202C,"2032-"2037,"2044,
"2057,"20D6-"20D7,"20DB-"20DD,"20E1,"20EE-"20EF,
"210B-"210C,"210E-"2113,"2118,"211B-"211C,"2126-"2128,
"212C-"212D,"2130-"2131,"2133,"2135,"2190-"2199,
"21A4,"21A6,"21A9-"21AA,"21BC-"21CC,"21D0-"21D5,
"2200,"2202-"2209,"220B-"220C,"220F-"2213,"2215-"221E,
"2223,"2225,"2227-"222E,"2234-"2235,"2237-"223D,
"2240-"224C,"2260-"2269,"226E-"2279,"2282-"228B,"228E,
"2291-"2292,"2295-"2299,"22A2-"22A5,"22C0-"22C5,
"22DC-"22DD,"22EF,"22F0-"22F1,
"2308-"230B,"2320-"2321,"2329-"232A,"239B-"23AE,
"23DC-"23DF,
"27E8-"27E9,"27F5-"27FE,"2A0C,"2B1A,
"1D400-"1D433,"1D49C,"1D49E-"1D49F,"1D4A2,"1D4A5-"1D4A6,
"1D4A9-"1D4AC,"1D4AE-"1D4B5,"1D4D0-"1D4E9,"1D504-"1D505,
"1D507-"1D50A,"1D50D-"1D514,"1D516-"1D51C,"1D51E-"1D537,
"1D56C-"1D59F,"1D6A8-"1D6B8,"1D6BA-"1D6D2,"1D6D4-"1D6DD,
"1D6DF,"1D6E1,"1D7CE-"1D7D7
}]{Neo Euler}
\setmathfont{CMU Concrete Roman}[range=up]
\setmathfont{CMU Concrete Bold}[range=bfup]
\setmathfont{CMU Concrete Italic}[range=it]
\setmathfont{CMU Concrete Bold Italic}[range=bfit]
\begin{document}
\begin{frame}
Note the following:
\[
\mathfrak F, w \Vdash \varphi \iff \mathfrak F \models \alpha(w).
\]
\end{frame}
\end{document}
以上内容从 CMU Concrete 加载所有字母和数字,以及尽可能多的符号新欧拉,并使用 Libertinus Math 作为任何剩余符号的后备字体。
我做了一点小小的改变:CMU Concrete 包含\varphi
但不包含\phi
。
请注意,DEK 最初委托欧拉在数学模式中取代混凝土,用于他的书具体数学也就是说,AMS 欧拉恰好存在,因此他的方程式不是看起来像这样。