如何使用 Beamer 在数学模式下将 Concrete 输出为轮廓字体

如何使用 Beamer 在数学模式下将 Concrete 输出为轮廓字体

以下 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-mathmathastext操作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 混凝土样品

以上内容从 CMU Concrete 加载所有字母和数字,以及尽可能多的符号新欧拉,并使用 Libertinus Math 作为任何剩余符号的后备字体。

我做了一点小小的改变:CMU Concrete 包含\varphi但不包含\phi

请注意,DEK 最初委托欧拉在数学模式中取代混凝土,用于他的书具体数学也就是说,AMS 欧拉恰好存在,因此他的方程式不是看起来像这样。

相关内容